2009-09-10 37 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); 
    } 
}