簡體   English   中英

如何在JRuby中加載已編譯的Java類?

[英]How do i load a compiled Java class in JRuby?

所以,我開始使用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'))

因為包語句我把骰子放在dir骰子里面,然后編譯它。 . └── dice ├── Dice.class └── Dice.java

運行IRB $ irb我們需要將類路徑添加到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> 

仍然支持,但我自己發現,我只需要這樣做

Java::dice.Dice

因為,只有當它在包的java文件夾中時才能使用Java:: part

java.lang.System

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM