Как загрузить скомпилированный класс Java в JRuby? - PullRequest
0 голосов
/ 05 декабря 2018

Итак, я начал с Java, и у меня возникли проблемы с загрузкой класса в скрипте JRuby или в другом приложении Java.Давайте использовать этот файл в качестве примера:

package dice;
import java.util.Random;
public class Dice {
    public int sides;
    private Random random;
    public Dice(int sides) {
        this.sides = sides;
        this.random = new Random();
    }
    public Dice() {
        this.sides = 6;
        this.random = new Random();
    }
}

Когда я компилирую его в NetBeans, он создает файл JAR с этим файлом класса и файл META-INF.Я могу потребовать это в JRuby, но я не могу выполнить часть java_import:

irb(main):013:0> java.dice.Dice
Traceback (most recent call last):
        7: from C:/jruby-9.2.4.1/bin/jirb:13:in `<main>'
        6: from org/jruby/RubyKernel.java:1181:in `catch'
        5: from org/jruby/RubyKernel.java:1181:in `catch'
        4: from org/jruby/RubyKernel.java:1415:in `loop'
        3: from org/jruby/RubyKernel.java:1043:in `eval'
        2: from (irb):13:in `evaluate'
        1: from org/jruby/javasupport/JavaPackage.java:252:in `method_missing'
NameError (missing class name (`java.dice.Dice'))

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Все еще голосую, но сам узнал, мне просто нужно сделать

Java::dice.Dice

, потому что он работает только без части Java::, когда он находится в папке java пакетов типа

java.lang.System
0 голосов
/ 06 декабря 2018

Из-за выражения пакета я положил кубик внутрь кубика и скомпилировал его. . └── dice ├── Dice.class └── Dice.java

Запуск IRB $ irb Нам нужно добавить classpath к Jruby и импортировать с использованием префикса пакета

jruby-9.2.0.0 :001 > $CLASSPATH << "."

jruby-9.2.0.0 :002 > java_import 'dice.Dice'
 => [Java::Dice::Dice] 

jruby-9.2.0.0 :003 > Dice.new
 => #<Java::Dice::Dice:0x4f9a3314> 
...