有一个Java接口作业:
interface Job{
...
}
以及实现它的JRuby类SimpleJob:
class SimpleJob
require org.quartz.Job
...
end
我需要(从Java类)使用javax.script.ScriptEngine
类实例化SimpleJob
类,并获取其类对象。我该怎么做?
"最简单"的方法是进行评估:
IRubyObject instance = (IRubyObject) rubyEngine.eval("SimpleJob.new");
访问类并手动"调用":
RubyClass klass = (RubyClass) rubyEngine.eval("SimpleJob");
klass.callMethod("new");
注意:使用JRuby的"直接"API:也可以实现相同的功能
runtime.getClass("SimpleJob").callMethod("new");
假设您获得了org.jruby.Ruby
运行时实例
我不确定你是否能安装它。为什么你不创建一个你想要的脚本,然后使用SciptEngine来执行这个脚本?像这样
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine rubyEngine = m.getEngineByName("jruby");
try {
FileReader f = new FileReader("yourscript.rb");
engine.eval(f);
} catch (javax.script.ScriptException e) {
...
}
看看这个,也许它会对你有所帮助https://github.com/jruby/jruby/wiki/DirectJRubyEmbedding