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

投稿時に問題の実例を提供していただけると助かります。

これが実用的な解決策です( engine にドル記号がないことに注意してください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 に答える