<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 67  文章 - 79  trackbacks - 0
    <2008年2月>
    272829303112
    3456789
    10111213141516
    17181920212223
    2425262728291
    2345678

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    一個小示例
    需要 jython-engine.jar jython.jar
    java 文件
    package test.jsr223;

    import java.io.*;
    import java.util.*;
    import javax.script.*;


    public class jsr223 {

        
    private ScriptEngine engine;
        
    static private Map<String, ScriptEngineFactory> scriptMap = null;

        
    static private void createMaps() {
        
    if (scriptMap == null) {
            scriptMap 
    = new HashMap<String, ScriptEngineFactory>();
            ScriptEngineManager manager 
    = new ScriptEngineManager();
            List
    <ScriptEngineFactory> list = manager.getEngineFactories();
            
    for (ScriptEngineFactory scriptEngineFactory : list) {
            scriptMap.put(scriptEngineFactory.getEngineName(),
                scriptEngineFactory);
            scriptMap.put(scriptEngineFactory.getLanguageName(),
                scriptEngineFactory);
            List
    <String> mimeList = scriptEngineFactory.getMimeTypes();
            
    for (String string2 : mimeList) {
                scriptMap.put(string2, scriptEngineFactory);
            }
            }
        }
        }

        
    static public ScriptEngine initEngineByScript(Scanner reader) {
        createMaps();
        ScriptEngine engine 
    = null;
        String firstLine 
    = reader.nextLine();
        
    if (firstLine != null) {
            Set
    <String> keys = scriptMap.keySet();
            
    for (String string : keys) {
            
    if (firstLine.indexOf(string) != -1) {
                engine 
    = scriptMap.get(string).getScriptEngine();
                
    break;
            }
            }
        }
        
    return engine;
        }

        
    static public ScriptEngine initEngineByFileName(String scriptFileName) {
        ScriptEngine engine 
    = null;
        
    int index = scriptFileName.lastIndexOf('.');
        
    if (index != -1) {
            String ext 
    = scriptFileName.substring(index + 1, scriptFileName
                .length());
            ScriptEngineManager manager 
    = new ScriptEngineManager();
            engine 
    = manager.getEngineByExtension(ext);
        }
        
    return engine;
        }

        
    static public ScriptEngine initEngine(String scriptFileName) {
        ScriptEngine engine 
    = null;
        Scanner scanner 
    = null;
        
    try {
            scanner 
    = new Scanner(new InputStreamReader(new FileInputStream(
                scriptFileName)));
            engine 
    = initEngineByScript(scanner);

            
    if (engine == null)
            engine 
    = initEngineByFileName(scriptFileName);
        } 
    catch (FileNotFoundException e) {
            e.printStackTrace();
        } 
    finally {
            
    if (scanner != null)
            scanner.close();
        }

        
    return engine;
        }

        
    private void init(String scriptFileName) {

        engine 
    = initEngine(scriptFileName);
        Reader reader 
    = null;
        
    try {
            reader 
    = new InputStreamReader(new FileInputStream(scriptFileName));
            engine.eval(reader);
        } 
    catch (FileNotFoundException e) {
            System.err.printf(
    "Script file %s can't find!\n", scriptFileName);
            e.printStackTrace();
            System.exit(
    -1);
        } 
    catch (ScriptException e) {
            System.err.printf(
    "Run script file %s error!\n", scriptFileName);
            e.printStackTrace();
        } 
    finally {
            
    if (reader != null)
            
    try {
                reader.close();
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
        }
        }

        
    public jsr223(File scriptFile) {
        String name 
    = scriptFile.getName();
        init(name);
        }

        
    public jsr223(String scriptFileName) {
        init(scriptFileName);
        }

        
    static public void ShowAllAvilableScript() {
        ScriptEngineManager manager 
    = new ScriptEngineManager();
        List
    <ScriptEngineFactory> list = manager.getEngineFactories();
        
    for (ScriptEngineFactory scriptEngineFactory : list) {
            System.out.printf(
                
    "EngineName:%s LanguageName:%s Extensions:%s Mime:%s\n",
                scriptEngineFactory.getEngineName(), scriptEngineFactory
                    .getLanguageName(), scriptEngineFactory
                    .getExtensions(), scriptEngineFactory
                    .getMimeTypes());

        }
        }

        
    public void callStart() throws ScriptException, NoSuchMethodException {
        Invocable invocableEngine 
    = (Invocable) engine;
        invocableEngine.invokeFunction(
    "Start""hello world 世界你好\n");
        }

        
    public void callStop() throws ScriptException, NoSuchMethodException {
        Invocable invocableEngine 
    = (Invocable) engine;
        invocableEngine.invokeFunction(
    "Stop""GoodBye 再見\n");
        }

        
    /**
         * 
    @param args
         * 
    @throws ScriptException
         * 
    @throws NoSuchMethodException
         
    */
        
    public static void main(String[] args) throws ScriptException,
            NoSuchMethodException {
        
    // TODO Auto-generated method stub
        
    //ShowAllAvilableScript();
        String scriptFileName = "E:\\workspace\\JSR223\\src\\test\\jsr223\\test.py";
        jsr223 jsr 
    = new jsr223(scriptFileName);

        jsr.callStart();
        jsr.callStop();

        }

    }
    jython 文件
    jython的本地化太....了。在py中用ToJavaString,ToPyString函數
    #/usr/bin/env python
    #
    coding=gbk
    import sys
    def GetLocalEncoding():
        
    '''Get local system encoding 
        return None when fail.
        
    '''
        
    import java.lang.System as JSystem
        propertys
    =["sun.jnu.encoding","file.encoding"]
        Encoding
    =None;
        
    for property in propertys:
            Encoding
    =JSystem.getProperty(property)
            
    if Encoding != None:
                
    break
        
    return Encoding
        
    def ToJavaString( astr,localEncoding=GetLocalEncoding()):
       
        
    import java.lang.String as JString
        
        
    if localEncoding == None:
            
    raise EnvironmentError("Can't get local encoding!\n")
        tmpstr 
    = JString(astr)
        rtnstr 
    = JString (tmpstr.getBytes("ISO8859_1"), localEncoding)
        
    if tmpstr.length() != rtnstr.length():
            
    return rtnstr
        
    else:
            
    return astr
      
    def ToPyString(astr):
        
    import java.lang.String as JString
        
    import org.python.core.PyString as PyString
        tmpstr 
    = JString(astr)
        rtnstr 
    = JString(tmpstr.getBytes(), "ISO8859_1")
        
    return PyString(rtnstr)

    def Start(*args):
        
    print sys.path
        
    for i in args:
           t
    =ToPyString(i)
           
    print t
           
    def Stop(*args):
        
    for i in args:
           t
    =ToPyString(i)
           
    print t

    if __name__=='__main__':
        
    print 'hello'


    posted on 2008-02-14 14:28 zarra 閱讀(1115) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲色一色噜一噜噜噜| 成人爽A毛片免费看| 久久精品国产亚洲AV天海翼| 免费观看美女用震蛋喷水的视频| 夭天干天天做天天免费看| 国产精品高清视亚洲一区二区| h视频在线观看免费网站| 亚洲国产综合在线| 免费看黄视频网站| 亚洲伊人久久大香线蕉综合图片| 曰韩无码AV片免费播放不卡| 国产一卡2卡3卡4卡2021免费观看| 亚洲成a人片77777群色| 国产香蕉九九久久精品免费| 亚洲欧美国产精品专区久久| 国产免费131美女视频| 黄色毛片免费观看| 综合亚洲伊人午夜网 | 国产精品无码素人福利免费| 18禁亚洲深夜福利人口| 国产精品亚洲mnbav网站 | 九九九国产精品成人免费视频| 亚洲男人第一无码aⅴ网站| 亚洲色大成网站www永久男同| 日本视频免费高清一本18 | 亚洲精品一品区二品区三品区| 日韩成人免费视频| 亚洲看片无码在线视频| 亚洲午夜精品久久久久久浪潮| 午夜精品免费在线观看| 亚洲成A人片在线播放器| 亚洲国产成人影院播放| 99热在线免费观看| 亚洲国产美女精品久久久| 亚洲乱码一区二区三区在线观看| 99精品视频免费观看| 婷婷亚洲综合一区二区| 亚洲午夜未满十八勿入| 国产无遮挡吃胸膜奶免费看视频| 精品国产一区二区三区免费| 一本色道久久综合亚洲精品蜜桃冫|