2016-08-30 2 views
1

Я Learing JRuby и я следующий код в моем затмениеКак вызвать метод Java с JRuby

public class Test { 
    public Test() 
    { 
     System.out.print("object created"); 
    } 
    public static void main(String args[]) 
    {} 
} 

Теперь я экспорт этот проект как runnable jar. так как runnable jar ищет основной метод, поэтому я создал основной метод.

Теперь я могу создать объект Test Class в JRuby как этот

require 'java' 
require 'test.jar' 

foo = Test.new 

и дает мне выход object created

Теперь я хочу, чтобы экспортировать его в jar вместо runnable jar. Поэтому для экспорта проекта, как jarmain method не требуется.

Так мой Java-код выглядит следующим образом

public class Test { 
    public Test() 
    { 
    System.out.print("object created"); 
    } 
} 

Тогда я снова создает объект Test Class же, как описано выше

require 'java' 
require 'test.jar' 

foo = Test.new 

Теперь он дает мне ошибку

NameError: uninitialized constant Test 
    const_missing at org/jruby/RubyModule.java:3309 
      <top> at test.rb:4 

Поскольку я новичок в jruby, я не знаю, почему экспорт как runnable jar работает но экспорт как jar не работает.

И какой из них лучший способ экспортировать как runnable jar или экспортировать как jar.

Пожалуйста, объясните подробно, так как я новичок в jruby, и документации не предусмотрено.

ответ

0

Для того, чтобы получить доступ к классу Java не указав его полное квалифицированное имя (как package.name.ClassName) вы должны импортировать класс с помощью метода java_import (подробнее см in documentation).

Предположим, что класс Test находится в org.test упаковке. Тогда код ruby ​​должен выглядеть следующим образом:

require 'java' 
require 'test.jar' 
java_import org.test.Test 

foo = Test.new 

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

  • Нет связанных вопросов^_^