2017-03-09 135 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 

它提供了 “为无未定义的方法`新”: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”。 –