从JRuby代码更改java变量?

Rak*_*kso 5 java variables jruby

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

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

这是我用JRuby代码得到的程度.

require 'java'
puts "Set player health here"
playerHealth = 3 # Setting player health here!
Run Code Online (Sandbox Code Playgroud)

但还没有在java中写任何东西.到目前为止,这几乎就是我所有的......

Séb*_*nec 3

据我了解,您正在尝试从 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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

注意,脚本中playerHealth是一个全局变量。

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