0

我的 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

输出是这样的:

全局变量:

为什么我的变量是空的?

4

1 回答 1

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"); 
    }
}
于 2013-01-18T01:54:49.510 回答