<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 再見\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)航:
     
    主站蜘蛛池模板: 免费国产黄网站在线看| 成全在线观看免费观看大全 | 亚洲乱码在线视频| 日韩精品视频免费网址| 国产高潮流白浆喷水免费A片 | 91大神亚洲影视在线| 国产无遮挡裸体免费视频| 好久久免费视频高清| 亚洲依依成人亚洲社区| 国产亚洲一区二区三区在线观看| 人妻视频一区二区三区免费| selaoban在线视频免费精品| 97se亚洲国产综合自在线| 久久久久久A亚洲欧洲AV冫| 国产人在线成免费视频| 成人无码区免费A∨直播| 精品亚洲AV无码一区二区三区| 国产亚洲情侣一区二区无| 毛片免费观看网址| 中文字幕乱码一区二区免费| 亚洲youwu永久无码精品| 亚洲视频一区二区三区| 中文字幕无码精品亚洲资源网| 毛片a级三毛片免费播放| 免费成人高清在线视频| 黄人成a动漫片免费网站| 亚洲av无码不卡久久| 国产亚洲成av片在线观看| 国产一级理论免费版| 91免费国产自产地址入| 东北美女野外bbwbbw免费| 亚洲AV无码专区在线观看成人 | 久久亚洲高清综合| 日本免费电影一区| 18勿入网站免费永久| 久久久久国产精品免费看| 国产福利免费视频 | 国产美女a做受大片免费| 精品国产污污免费网站aⅴ| 免费一级毛片无毒不卡| 四虎影视久久久免费|