JRuby on Rails: использование пользовательских классов Java в приложении Rails

Я только начал работать с JRuby on Rails, и мне это очень нравится. Я знаю, как использовать текущие классы в Java API в моем приложении Rails, но если бы я захотел создать новый пользовательский класс, написанный исключительно на Java-коде, как бы я смог использовать его в своем приложении Rails?

Например, допустим, я создал Dog.java:

class Dog {
  private String name;

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

  public String getName() {
    return name;
  }
}

Как мне создать новый объект Dog (Dog.new) в моем приложении Rails? Мне нужно куда-нибудь поместить файл Dog.java или Dog.class, а затем вызвать некоторую форму «импорта», чтобы импортировать его в мое приложение Rails. Я понятия не имею, куда это должно идти в структуре каталогов, и я не знаю, где и как я должен сообщить своему приложению, как его включить.


person Joel Andritsch    schedule 12.10.2010    source источник


Ответы (1)


Вам понадобится пара вещей.

  1. Скомпилируйте класс.

    mkdir classes
    javac -d classes src/Dog.java
    
  2. Добавьте classes в путь к классам в вашем приложении Rails (например, инициализатор).

    require 'java'
    $CLASSPATH << File.join(Rails.root, "classes")
    
  3. Импортируйте класс.

    java_import Java::Dog
    

Если вы хотите создать военный файл своего приложения Rails с помощью Warbler, вы также можете добавить каталог classes в военный файл, используя параметр config.dirs в config/warble.rb, и класс Dog будет доступен без необходимости добавления в $CLASSPATH из-за Java. соглашение о том, что WEB-INF/классы добавляются в путь к классам в веб-приложении Java.

person Nick Sieger    schedule 12.10.2010
comment
Превосходно! Ты сделал мой день, Ник. Благодарю вас! - person Joel Andritsch; 12.10.2010