我不确定如何解释这一点,但这里有:
我希望能够将一些命令“插入”到我的代码中将从外部文件加载的部分。为了解析和执行这些命令,我可能不得不使用像BeanShell的eval方法这样的脚本。问题是它似乎没有识别它内部的实例/方法。作为一个非常基本的例子,我想做一些像
这样的事情 public void somethingHappens()
{
Foo foo = new Foo();
Interpreter i = new Interpreter();
i.eval("print(foo.getName());");
}
这可能吗?我应该使用其他脚本工具吗?
答案 0 :(得分:1)
如果您使用的是1.6,则可以使用内置的JavaScript支持。
Java Scripting Programmer's Guide解释了如何将Java类导入脚本。
此article中的代码示例9解释了如何将对象传递到脚本的范围。
答案 1 :(得分: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);
}
}