<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)

    隨筆檔案

    文章檔案

    相冊(cè)

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    一個(gè)小示例
    需要 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 再見(jiàn)\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函數(shù)
    #/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) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费一级毛suv好看的国产网站| 国产一级淫片a视频免费观看| 青青免费在线视频| 亚洲人和日本人jizz| 亚洲国产美女精品久久久久∴ | 国产免费伦精品一区二区三区| 精品久久久久久亚洲精品| 亚洲av综合avav中文| 国产精品亚洲玖玖玖在线观看| 免费看美女被靠到爽的视频| 999国内精品永久免费视频| AAA日本高清在线播放免费观看| 特级毛片aaaa级毛片免费| 亚洲av午夜国产精品无码中文字 | 免费无码av片在线观看| 日韩免费高清一级毛片| 蜜桃传媒一区二区亚洲AV| 香蕉大伊亚洲人在线观看| 亚洲综合一区二区精品久久| 亚洲国产日韩一区高清在线| 岛国岛国免费V片在线观看| 国产青草亚洲香蕉精品久久| 亚洲老熟女五十路老熟女bbw | 国产精品入口麻豆免费观看| 美女内射无套日韩免费播放| 亚洲AV日韩综合一区尤物| 亚洲一级毛片在线观| 亚洲国产精品久久网午夜| 亚洲免费电影网站| 亚洲伊人久久大香线蕉影院| 91亚洲国产成人久久精品网址| 亚洲韩国在线一卡二卡| 亚洲白色白色永久观看| 亚洲一区二区三区免费观看| 亚洲人xxx日本人18| 亚洲色精品VR一区区三区| 亚洲精品第一国产综合亚AV| 亚洲成av人在线观看网站| 国产精品成人亚洲| 大片免费观看92在线视频线视频| 一级毛片不卡免费看老司机|