从JRuby代码中更改java变量?
正如标题所说,我不想从jruby代码中更改java中的变量 更具体地说,我的Java代码中有一个整数,它还没有值,我用JRuby代码给这个变量一个值,但我不知道怎么做 这就是我对JRuby代码的理解程度从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
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?还有,为什么不同的组件会相互干扰变量?即使在一种语言中,这也可能不是一个好主意。为什么不用方法调用的返回值设置变量呢?我也不知道怎么做。。