java - 我如何在 JRuby 中加载已编译的 Java 类?

标签 java 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'))

最佳答案

因为包声明我把 dice 放在 dir dice 里面,然后编译它。 . └── 骰子 ├── Dice类 └── 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 - 我如何在 JRuby 中加载已编译的 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53638928/

相关文章:

ruby-on-rails - 是否可以在 Ruby on Rails 中调试单元测试?

java - jdk 8 不允许 switch 语句中出现字符串?为什么

java - 如何在没有模型的情况下查找 JSON 中的特定元素

java - Spring、Struts、Hibernate、JavaServer Faces、Tapestry 有什么区别?

java - 在 Android Studio 中动态设置按钮的约束

java - JavaFX PieChart 的问题

jruby 中的 java 性能

ruby-on-rails - Tomcat 无法使用 JRuby war 定位 jdbcmysql 适配器

ruby-on-rails - JRuby 回形针

java - JRuby on Rails : Using custom Java classes in your Rails app