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 閱讀(564) 評論(0)  編輯  收藏 所屬分類: java - 腳本
          主站蜘蛛池模板: 集安市| 库尔勒市| 阿巴嘎旗| 菏泽市| 浙江省| 泰顺县| 梁平县| 庆安县| 连平县| 湟中县| 交口县| 绥滨县| 远安县| 搜索| 辽宁省| 海城市| 长海县| 连南| 德令哈市| 甘德县| 布拖县| 大悟县| 巩义市| 遵义县| 永修县| 桐庐县| 渝中区| 松溪县| 体育| 衡阳县| 磴口县| 南充市| 扶绥县| 孟连| 鹤庆县| 滦南县| 鄂伦春自治旗| 察隅县| 正蓝旗| 古交市| 桦南县|