执行Ruby脚本的Java代码:
ruby = new ScriptingContainer(LocalVariableBehavior.PERSISTENT);
ruby.put("MyJavaClass", MyJavaClass.class);
ruby.runScriptlet(readFile("Test.rb"));
MyJavaClass
代码:
public class MyJavaClass {
public MyJavaClass(String name) {
System.out.println("I got a name: " + name);
}
}
Test.rb
中的Ruby代码:
someInstance = MyJavaClass.new("Joe")
这是我尝试使用JRuby初始化Ruby脚本中的Java对象。它不起作用。
答案 0 :(得分:1)
首先,请注意,通过将MyJavaClass.class
作为ruby变量,可用的Java Class对象可用于JRuby脚本。以下作品:
java_class = MyJavaClass.getDeclaredConstructor(java.lang.String.java_class)
someInstance = java_class.new_instance("Joe")
它使用Java反射来实例化MyJavaClass
。
但是,这可以更简单地完成,而无需将类添加为ruby var。首先,确保MyJavaClass
文件夹的路径位于类路径(or ruby $LOAD_PATH
)上。然后,在Test.rb
。
someInstance = Java::MyJavaClass.new("joe")
或
java_import 'MyJavaClass'
someInstance = MyJavaClass.new("Joe")