我的Ruby脚本:
def start
print "Global variable: #{$globalVariable}"
end
执行它的Java代码:
jruby = new ScriptEngineManager().getEngineByName("jruby"); // Create engine
jruby.eval(myRubyScriptContents); // Evaluate my ruby script
jruby.put("$globalVariable", this); // Give it a global variable
Invocable invocable = (Invocable) jruby;
invocable.invokeFunction("start"); // Call the start method to print my variable
输出是这样的:
全局变量:
为什么我的变量是空的?
答案 0 :(得分:0)
如果您可以在发布时提供问题的工作示例,将会很有帮助。
这是一个有效的解决方案(注意引擎put
中美元符号的缺失)。
import javax.script.*;
class TesterApp {
public static void main(String[] args) throws Exception {
ScriptEngine jruby = new ScriptEngineManager().getEngineByName("jruby");
jruby.eval("def start;print \"Global variable: #{$globalVariable}\";end");
jruby.put("globalVariable", "This is a working example.");
Invocable invocable = (Invocable) jruby;
invocable.invokeFunction("start");
}
}