2

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);
    }
}

内の Ruby コードTest.rb:

someInstance = MyJavaClass.new("Joe")

これは、JRuby を使用して Ruby スクリプト内で Java オブジェクトを初期化しようとしたものです。それは動かなかった。

4

1 に答える 1

1

MyJavaClass.classまず、 Ruby 変数として配置することで、使用可能な Java クラス オブジェクトが JRuby スクリプトで使用できるようになることに注意してください。以下の作品:

java_class = MyJavaClass.getDeclaredConstructor(java.lang.String.java_class)
someInstance = java_class.new_instance("Joe")

Java リフレクションを使用してインスタンス化しますMyJavaClass

ただし、これはクラスを ruby​​ var として追加せずに、より簡単に行うことができます。まず、 のフォルダーのMyJavaClassパスがクラスパス (または ruby$LOAD_PATH​​ ) 上にあることを確認します。次に、次のようにクラスを呼び出しますTest.rb

someInstance = Java::MyJavaClass.new("joe")

また

 java_import 'MyJavaClass'
 someInstance = MyJavaClass.new("Joe")
于 2013-01-08T23:58:39.810 に答える