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 - 腳本
          主站蜘蛛池模板: 济宁市| 库伦旗| 灵丘县| 洮南市| 徐闻县| 临夏市| 铁力市| 沁源县| 霍林郭勒市| 商南县| 定结县| 上犹县| 莱州市| 赣榆县| 阿勒泰市| 怀集县| 博野县| 天气| 新田县| 富裕县| 阳东县| 西藏| 西丰县| 江达县| 河北省| 乌兰浩特市| 六盘水市| 内丘县| 青冈县| 和林格尔县| 荣成市| 张家港市| 丹阳市| 将乐县| 长乐市| 鄄城县| 翁牛特旗| 静海县| 楚雄市| 滁州市| 宁夏|