Можно ли назвать скомпилированные классы JRuby от Java?

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

Спасибо

7
задан John Baker 4 May 2010 в 22:31
поделиться

3 ответа

В JRuby 1.5 есть новый способ сделать это! Ваш вопрос очень своевременен. Вот пример сеанса:

http://gist.github.com/390342

Мы надеемся, что очень скоро у нас будет сообщение в блоге с подробным описанием этой новой функции. Здесь есть некоторые предварительные документы на вики JRuby:

http://wiki.jruby.org/GeneratingJavaClasses

8
ответ дан 7 December 2019 в 03:12
поделиться

Это возможно с помощью пакета embed в JRuby, но я думаю, что способ выходит за рамки данного ответа. Посмотрите здесь: http://kenai.com/projects/jruby/pages/RedBridge

0
ответ дан 7 December 2019 в 03:12
поделиться

На самом деле есть два способа вызова кода 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();

ресурс

1
ответ дан 7 December 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: