Таким образом, я придумал общее представление написать некоторый код в JRuby, затем доступ все классы через Java. Я понятия не имею, возможно ли это вообще, но я хотел спросить так или иначе. Позволяет говорят, что у меня есть некоторый код JRuby:
class adder
def addme
return 22
end
end
Если я скомпилировал, это с jrubyc - там любой способ, которым я мог бы затем возможно сделать что-то вроде этого в Java:
import adder;
class anything {
void testMethod()
{
adder a = new adder();
int x = a.addme();
}
}
После рассмотрения его теперь он вид заставляет меня думать, что Java будет иметь нулевую идею, какой тест объекта addme собирается возвратиться так, чтобы не мог бы работать. Я не знаю, но я хотел бросить его там так или иначе.
Спасибо
В JRuby 1.5 есть новый способ сделать это! Ваш вопрос очень своевременен. Вот пример сеанса:
Мы надеемся, что очень скоро у нас будет сообщение в блоге с подробным описанием этой новой функции. Здесь есть некоторые предварительные документы на вики JRuby:
Это возможно с помощью пакета embed в JRuby, но я думаю, что способ выходит за рамки данного ответа. Посмотрите здесь: http://kenai.com/projects/jruby/pages/RedBridge
На самом деле есть два способа вызова кода ruby из java. Первый медленнее, но его можно изменить во время выполнения - это вызвать скриптовый движок, как по этой ссылке. Но что касается того, как вы это сделали, jrubyc компилирует ruby в javaBytecode, что означает, что java будет видеть его как код java
jrubyc adder.rb --java Компиляция файла "adder.rb" как класса "Adder.class"
и так же, как вы сделали...
так что вы будете вызывать его как любой другой класс java
import org.jruby.RubyObject
Adder ad = new Adder();
RubyObject ro = ad.addme();