有一个Java接口作业:
interface Job{
...
}以及实现它的JRuby类SimpleJob:
class SimpleJob
require org.quartz.Job
...
end我需要(从Java类)使用SimpleJob类实例化javax.script.ScriptEngine类,并获取它的类对象。我该怎么做?
发布于 2014-09-12 09:24:47
“最简单”的方法是做一个评估:
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 运行时实例
发布于 2014-09-12 08:18:07
我不确定你能不能夸大一下。为什么不创建一个脚本来完成您想要的,然后使用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
https://stackoverflow.com/questions/25803513
复制相似问题