从JRuby代码中更改java变量?

从JRuby代码中更改java变量?,java,variables,jruby,Java,Variables,Jruby,正如标题所说,我不想从jruby代码中更改java中的变量 更具体地说,我的Java代码中有一个整数,它还没有值,我用JRuby代码给这个变量一个值,但我不知道怎么做 这就是我对JRuby代码的理解程度 require 'java' puts "Set player health here" playerHealth = 3 # Setting player health here! 但是还没有用java写任何东西。到目前为止,这几乎是我所拥有的一切。据我所知,您正试图从Java调用JRuby

正如标题所说,我不想从jruby代码中更改java中的变量

更具体地说,我的Java代码中有一个整数,它还没有值,我用JRuby代码给这个变量一个值,但我不知道怎么做

这就是我对JRuby代码的理解程度

require 'java'
puts "Set player health here"
playerHealth = 3 # Setting player health here!

但是还没有用java写任何东西。到目前为止,这几乎是我所拥有的一切。

据我所知,您正试图从Java调用JRuby引擎,因此您可以这样做来修改JRuby中的Java变量:

import javax.script.*;

public class EvalJRubyScript {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager factory = new ScriptEngineManager();

        int playerHealth = 0;

        ScriptEngine engine = factory.getEngineByName("jruby");
        ScriptContext context = engine.getContext();
        context.setAttribute("playerHealth", playerHealth, ScriptContext.ENGINE_SCOPE);

        try {
            engine.eval("$playerHealth = 42");
            playerHealth = (Integer)context.getAttribute("playerHealth",  ScriptContext.ENGINE_SCOPE);

            System.out.println(playerHealth);
        } catch (ScriptException exception) {
            exception.printStackTrace();
        }
    }
}
请注意,在脚本
playerHealth
中,playerHealth是一个全局变量


如果您想加载外部JRuby脚本而不是评估代码,请查看更多详细信息。

请查看。例如>>java.lang.System.setProperty“myprop”,“123”=>nil>>java.lang.System.getProperty“myprop”java.lang.System.getProperty“myprop”=>“123”您计划从jruby调用java还是从java调用jruby?还有,为什么不同的组件会相互干扰变量?即使在一种语言中,这也可能不是一个好主意。为什么不用方法调用的返回值设置变量呢?我也不知道怎么做。。