Вызовите класс Ruby через Java с Jruby - PullRequest
0 голосов
/ 25 апреля 2010

Если я реализую класс в ruby ​​и скомпилирую его с помощью jrubyc, то я не смогу вызвать его непосредственно из класса java, если я начну с java. Если я вижу это право, я должен использовать org.jruby.embed... для реализации оболочки, которая берет имя класса и метод для вызова моего ruby-класса.

Нужно ли это делать также, если я запускаю приложение с jruby? В моем текущем проекте я полностью запускаю java workflow engine с jruby. Рабочий процесс должен вызвать метод в классе ruby, который он не может найти.

Может быть, легче понять:

      [ruby_class]   <-----has to call----.
                                          |
jruby [ruby_start_script] --starts--> [java wfe]

Ответы [ 3 ]

0 голосов
/ 20 июня 2010

Если я реализую класс в ruby ​​и скомпилируйте его с Jrubyc, чем это не так можно назвать его из класса Java напрямую, если я начну с Java.

Не уверен, что я полностью понимаю вопрос, но если вы спрашиваете, можете ли вы вызвать метод Jruby из класса Java с помощью jrubyc, это возможно. Посмотрите на это сообщение в блоге, которое показывает, как вызвать метод JRuby из Java .

0 голосов
/ 21 июня 2010

IIRC, это одна из новейших интеграций с JRuby, которая может быть изменена. Это представляется возможным, как описано в этом посте , хотя и предупреждает, что оно не очень эффективно.

0 голосов
/ 25 апреля 2010

Я не знаю, понял ли я, но для того, чтобы запросить ваш код, вам нужно просто потребовать его и убедиться, что он находится в вашем JAVA PATH или APP PATH. Например, в вашем скрипте jruby вы можете сделать это:

require 'java'
java_import java.lang.System
version = System.getProperties["java.runtime.version"]

Вы можете также вызывать java-методы, такие как:

 java.lang.System.currentTimeMillis

Я бы сказал, что вы заставляете свой класс работать с Java-приложением, затем вы должны поместить его в путь к своему приложению, выполнить 'java' и java_import your.class.here

...