0

次の 2 つのディレクトリにコンパイルされた Java ライブラリがあります。

Directory A
   com.foo.bar.app.* //without test
Directory B
   com.foo.bar.app.test.*

私の目的は、rjb gem を使用して com.foo.bar.app.test (ディレクトリ A に依存関係がある) のいくつかの単純な Java メソッドを呼び出すことです。

例では、次のインスタンスを使用しています。

Rjb::load(classpath = '.', jvmargs=[])

rjb を使用しmethodFromCreate()てクラス com.foo.bar.app.test.create からメソッドを呼び出すにはどうすればよいですか?

4

2 に答える 2

3

次のようなものを使用できます。

require 'rjb'

RJB_LOAD_PATH = ["Directory A", "Directory B"].join(File::PATH_SEPARATOR)
RJB_OPTIONS = ['-Djava.awt.headless=true','-Xms16m', '-Xmx32m']

Rjb::load RJB_LOAD_PATH, RJB_OPTIONS

my_create_class = Rjb::import('com.foo.bar.app.test.Create')
my_create = my_create_class.new

my_create.methodFromCreate()

例示のためだけに現在使用している RJB_OPTIONS を追加しました。何か awt が必要な場合は、-Djava.awt,... オプションを削除してください。

于 2011-10-28T10:39:12.887 に答える
0

rjb gemについては知りませんが、JRubyはこれを非常に簡単に行います

ruby コード内で java を要求し、クラス階層へのパスをクラスパスに追加する必要があります。クラスをインポートすると、クラス名で new を呼び出してインスタンスを作成できます。クラスをインポートしない場合は、完全修飾クラス名で new を呼び出してインスタンスを作成できます。

require 'java'
$CLASSPATH<< "path/to/java/classes";  

import com.foo.bar.app.Class1

c1 = Class1.new
c2 = com.foo.bar.app.test.Class2.new
于 2011-06-09T23:10:59.153 に答える