HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

          知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

            BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

          import java.io.File;
          import javax.script.Invocable;
          import javax.script.ScriptEngine;
          import javax.script.ScriptEngineManager;
          import javax.script.ScriptException;

          public class ScriptTest {
           public static void main(String[] args) throws Exception {
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine engine = manager.getEngineByName("JavaScript");
            testScriptVariables(engine);// 演示如何暴露Java對象為腳本語言的全局變量
            testInvokeScriptMethod(engine);// 演示如何在Java中調用腳本語言的方法
            testScriptInterface(engine);// 演示腳本語言如何實現Java的接口
            testUsingJDKClasses(engine);// 演示腳本語言如何使用JDK平臺下的類
           }

           public static void testScriptVariables(ScriptEngine engine)
             throws ScriptException {
            File file = new File("e:/test/aaa.txt");
            engine.put("f", file);
            engine.eval("println('Total Space:'+f.getTotalSpace())");
           }

           public static void testInvokeScriptMethod(ScriptEngine engine)
             throws Exception {
            String script = "function hello(name) { return 'Hello,' + name;}";
            engine.eval(script);
            Invocable inv = (Invocable) engine;
            String res = (String) inv.invokeFunction("hello", "Scripting");
            System.out.println("res:" + res);
           }

           public static void testScriptInterface(ScriptEngine engine)
             throws ScriptException {
            String script = "var obj = new Object(); obj.run = function() { println('run method called'); }";
            engine.eval(script);
            Object obj = engine.get("obj");
            Invocable inv = (Invocable) engine;
            Runnable r = inv.getInterface(obj, Runnable.class);
            Thread th = new Thread(r);
            th.start();
           }

           public static void testUsingJDKClasses(ScriptEngine engine)
             throws Exception {
            // Packages是腳本語言里的一個全局變量,專用于訪問JDK的package
            String js = "function doSwing(t){var f=new Packages.javax.swing.JFrame(t);f.setSize(400,300);f.setVisible(true);}";
            engine.eval(js);
            Invocable inv = (Invocable) engine;
            inv.invokeFunction("doSwing", "Scripting Swing");
           }
          }



          </script>

          posted on 2007-11-16 09:32 helloworld2008 閱讀(557) 評論(0)  編輯  收藏 所屬分類: java - 腳本
          主站蜘蛛池模板: 徐汇区| 乃东县| 甘泉县| 兴宁市| 开鲁县| 青州市| 汕尾市| 韶山市| 龙游县| 喀什市| 西宁市| 桐城市| 本溪| 丰顺县| 宁德市| 德钦县| 监利县| 读书| 开封市| 东方市| 神池县| 上虞市| 合川市| 余姚市| 晋宁县| 顺平县| 新野县| 隆回县| 资兴市| 日喀则市| 二手房| 清徐县| 铁岭县| 枣强县| 乌拉特前旗| 疏附县| 盐池县| 禄丰县| 高青县| 铁力市| 东城区|