2010-10-12 10 views
6

Właśnie zacząłem z JRuby na Railsach i absolutnie kocham to. Wiem, jak używać aktualnych klas w Java API w mojej aplikacji Rails, ale gdybym chciał stworzyć nową niestandardową klasę napisaną wyłącznie w języku Java, jak mógłbym ją wykorzystać w mojej aplikacji Rails?JRuby on Rails: Używanie niestandardowych klas Java w twojej aplikacji Railsowej

Na przykład, powiedzmy, że stworzony Dog.java:

class Dog { 
    private String name; 

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

    public String getName() { 
    return name; 
    } 
} 

Jak będę w stanie stworzyć nowy obiekt Dog (Dog.new) w mojej aplikacji Rails? Muszę gdzieś umieścić plik Dog.java lub Dog.class, a następnie wywołać jakąś formę "importu", aby zaimportować go do mojej aplikacji Rails. Nie mam pojęcia, gdzie to powinno się znaleźć w strukturze katalogów, ani nie wiem, gdzie i jak mam powiedzieć mojej aplikacji, jak ją uwzględnić.

Odpowiedz

12

Potrzebujesz kilku rzeczy.

  1. Skompiluj klasę.

    mkdir classes 
    javac -d classes src/Dog.java 
    
  2. Dodaj classes do ścieżki klasy w aplikacji Rails (inicjator na przykład).

    require 'java' 
    $CLASSPATH << File.join(Rails.root, "classes") 
    
  3. Zaimportuj zajęcia.

    java_import Java::Dog 
    

Jeśli chcesz, aby plik wojenną aplikacji Rails z zwyczajny, można również dodać katalog classes do pliku war za pomocą opcji w config/warble.rbconfig.dirs, a klasa Dog będzie dostępny bez konieczności dodawania do $CLASSPATH z powodu konwencji Java, że ​​WEB-INF/classes są dodawane do ścieżki klasy w aplikacji internetowej Java.

+0

Doskonale! Zrobiłeś mój dzień, Nick. Dziękuję Ci! –

Powiązane problemy