2014-09-12 3 views
0

Существует интерфейс Java Работа:Как я могу создать экземпляр класса JRuby, который реализует интерфейс Java в Java

interface Job{ 
... 
} 

и класс SimpleJob JRuby, который реализует это:

class SimpleJob 
require org.quartz.Job 
... 
end 

Мне нужно (из класса Java) создает экземпляр класса SimpleJob с использованием класса javax.script.ScriptEngine и получает его объект класса. Как мне это сделать?

ответ

0

«простой» способ делает в Eval:

IRubyObject instance = (IRubyObject) rubyEngine.eval("SimpleJob.new"); 

для доступа к классу и «вызов «это вручную:

RubyClass klass = (RubyClass) rubyEngine.eval("SimpleJob"); 
klass.callMethod("new"); 

ПРИМЕЧАНИЕ: также можно достичь sam е с использованием JRuby в "прямой" API:

runtime.getClass("SimpleJob").callMethod("new"); 

если вы получены org.jruby.Rubyвыполнения экземпляра в

0

Я не уверен, что вы можете его установить. Почему вы просто не создаете скрипт, который делает то, что вы хотите, а затем используете 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

Смежные вопросы