JRuby (1.6.7.2) 框架的 JSR 223 javax.script 接口(interface)似乎忽略了 ScriptContext 绑定(bind)中绑定(bind)的 Java 值。 我犯错了吗? 这是一个不起作用的简单示例:
private void run() throws ScriptException {
ScriptEngine engine = new JRubyEngineFactory().getScriptEngine();
LittleClass l = new LittleClass();
engine.put("l", l);
engine.eval("l.x;");
}
public class LittleClass {
public int x;
public void add() {
x = x + 1;
}
}
或者这是一个已知问题?
最佳答案
默认情况下,局部变量不会在多次评估中保留。请参阅:http://kenai.com/projects/jruby/pages/RedBridge
要更改此行为,请设置 org.jruby.embed.localvariable.behavior
属性:
System.setProperty("org.jruby.embed.localvariable.behavior", "persistent");
ScriptEngine engine = new JRubyEngineFactory().getScriptEngine();
LittleClass l = new LittleClass();
engine.put("l", l);
engine.eval("l.add");
System.out.println(engine.eval("l.x"));
关于binding - JRuby JSR223 接口(interface)忽略 binidngs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786812/