[英]How to package in a .jar java main + jruby compiled class + ruby script?
[英]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.