2009-09-10 36 views
0

我真的不知道我該怎麼解釋這一點,但這裏有雲:執行腳本內法的BeanShell

我希望能夠到「插入」一些命令成將被載入我的部分代碼外部文件。爲了解析和執行這些命令,我​​推測必須使用一些腳本,比如BeanShell的eval方法。問題在於它似乎不能識別它內部的實例/方法。作爲一個非常基本的例子,我想要做類似

public void somethingHappens() 
    { 
     Foo foo = new Foo(); 
     Interpreter i = new Interpreter(); 
     i.eval("print(foo.getName());"); 
    } 

這可能嗎?我應該使用其他腳本工具嗎?

回答

1

如果您使用的是1.6,則可以使用內置的JavaScript支持。

Java Scripting Programmer's Guide解釋瞭如何將Java類導入腳本。

這個article中的代碼示例9解釋瞭如何將對象傳遞到腳本的作用域。

+0

謝謝,我不知道在的ScriptEngine類的put方法。我相信這將解決我迄今爲止的問題。 – 2009-09-10 21:44:33

0

使用BeanShell的,這是你可以嘗試

package beanshell; 

import bsh.EvalError; 
import bsh.Interpreter; 

public class DemoExample { 

    public static void main(String [] args) throws EvalError { 
     Interpreter i = new bsh.Interpreter(); 
     String usrIp = "if(\"abc\".equals(\"abc\")){" 
       + "demoExmp.printValue(\"Rohit\");" 
       + "}"; 

     i.eval("" 
       + "import beanshell.DemoExample;" 
       + "DemoExample demoExmp = new beanshell.DemoExample();" 
       + ""+usrIp); 
    } 

    public static void printValue(String strVal){ 
     System.out.println("Printing Value "+strVal); 
    } 
}