<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 閱讀(1120) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲欧美日韩中文二区| 亚洲国产AV无码专区亚洲AV| 亚洲熟女综合一区二区三区| 国产黄色免费网站| 久久精品国产亚洲av麻豆色欲 | 亚洲国产精品无码久久久蜜芽 | 亚洲综合激情九月婷婷 | 免费无码AV片在线观看软件| 亚洲午夜在线一区| 91成年人免费视频| 亚洲av无码片在线观看| 国产免费久久精品99re丫y| 亚洲AV综合色区无码二区偷拍| 亚洲成年人免费网站| 亚洲伊人色一综合网| 日韩视频免费一区二区三区| 亚洲AV成人一区二区三区观看| 亚洲av无码天堂一区二区三区| 中文字幕在线免费播放| 亚洲老妈激情一区二区三区| 中文字幕免费高清视频| 日韩亚洲国产高清免费视频| 四虎永久免费地址在线网站| 国产激情久久久久影院老熟女免费| 久久精品国产精品亚洲色婷婷| 希望影院高清免费观看视频| 亚洲Av无码国产一区二区 | 91亚洲国产在人线播放午夜| 91精品免费国产高清在线| 亚洲AV无码一区二区大桥未久| 亚洲综合久久夜AV | 免费A级毛片无码视频| 一区二区亚洲精品精华液| 无码专区一va亚洲v专区在线| 大地资源中文在线观看免费版| 亚洲一区二区三区免费视频| 四虎免费久久影院| 99在线视频免费| 国产亚洲精品第一综合| 久久久久久a亚洲欧洲AV| 卡1卡2卡3卡4卡5免费视频|