2017-03-09 14 views
3

RJB(Ruby Java Bridge)を使用してRuby on RailsプロジェクトのJavaクラスから関数を呼び出そうとしています。RJB Hello Worldの例

Javaクラスが

public class HelloWorld { 

    int fifty(){ 
     return 50 ; 
    } 
    public static void main(String[] args) { 
     // Prints "Hello, World" in the terminal window. 
     System.out.println("Hello, World"); 
    } 
} 

であると私は

require "rjb" 
    def home 
     myclass = Rjb::load(classpath ='\\home\\mennatallah\\TopicalClusteringofTweets\\lib\\java_libs\\helloworld.class', jvmargs=[]) 

     myclass_instance = myclass.new 
     @output = myclass_instance.fifty 
    end 

を持つコントローラにそれは "nilのための「`新しい未定義のメソッド:NilClass" を与えるどのように私はこれを行うことができます ?

+0

あなたはUNIXのようなオペレーティングシステムのようです。 Unixライクなオペレーティングシステムでは、パスコンポーネントの区切り文字は '\\ 'ではなく'/'です。 –

答えて

3

以下を試すことができます。それは助けるかもしれません:

Rjb::add_jar(Dir.glob("#{Rails.root}/lib/java_libs/*.jar").join(':')) 
Rjb::load(Dir.glob("#{Rails.root}/lib/java_libs/*.jar").join(':')) 
test = Rjb.import('HelloWorld') 
instance_class = test.new 
+1

ありがとう、それは働いた! – MennatAllahHany

+0

は* test.new *でメインと呼ばれていますか?コンソール出力をファイル(output.txt)にリダイレクトしていますが、* text.new *を呼び出した後もこのファイルは空のままです。 IDEで実行すると、output.txtファイルに「Hello、World」があります。 –