JRuby on Rails:在Rails应用程序中使用自定义Java类

Joe*_*sch 6 java ruby-on-rails jruby jrubyonrails

我刚开始使用JRuby on Rails并且非常喜欢它.我知道如何在我的Rails应用程序中使用Java API中的当前类,但如果我想创建一个用纯Java代码编写的新自定义类,我怎样才能在我的Rails应用程序中使用它?

例如,假设我创建了Dog.java:

class Dog {
  private String name;

  public Dog() {
    name = "Fido";
  }

  public String getName() {
    return name;
  }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在我的Rails应用程序中创建一个新的Dog对象(Dog.new)?我需要将Dog.java或Dog.class文件放在某处,然后调用某种形式的"import"将其导入我的Rails应用程序.我不知道这应该放在目录结构中,也不知道我应该在哪里以及如何告诉我的应用程序如何包含它.

Nic*_*ger 12

你需要一些东西.

  1. 编译课程.

    mkdir classes
    javac -d classes src/Dog.java
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加classes到Rails应用程序中的类路径(例如初始化程序).

    require 'java'
    $CLASSPATH << File.join(Rails.root, "classes")
    
    Run Code Online (Sandbox Code Playgroud)
  3. 导入课程.

    java_import Java::Dog
    
    Run Code Online (Sandbox Code Playgroud)

如果你想用Warbler制作你的Rails应用程序的war文件,你也可以classes使用config.dirs选项in 将目录添加到war文件中config/warble.rb,并且Dog类将可用,而不必添加,$CLASSPATH因为Java-约定INF/classes将添加到Java Web应用程序中的类路径中.