Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

RubyJavaBridge 質問と回答

RJBの質問と回答

質問:ところで、インタフェースのインポートは出来ないのですか?

答え(by arton):出来ます。

C:\Home\arton\test>type sc.rb
require 'rjb'
Rjb::load
sc = Rjb::import('javax.swing.SwingConstants')
puts sc.BOTTOM
puts sc.LEFT

C:\Home\arton\test>ruby sc.rb
3
2

なお、定数へのアクセスはrjb-0.0.9からのサポートです。

質問 Cygwinでクラスパスを追加指定する方法がわかりません。(by ryugate)

Rjb::load('c:/lib/hoge.jar')
Rjb::load('c:\lib\hoge.jar')
Rjb::load('c:\\lib\\hoge.jar')
Rjb::load('/cygdrive/c/lib/hoge.jar')
Rjb::load(nil, ['-classpath c:/lib/hoge.jar'])
Rjb::load(nil, ['-classpath c:\lib\hoge.jar'])
Rjb::load(nil, ['-classpath c:\\lib\\hoge.jar'])
Rjb::load(nil, ['-classpath /cygdrive/c/lib/hoge.jar'])

のいずれでもだめでした。 どうぞよろしくお願いいたします。

答え(by ryugate and arton):

rjb.0.2.1より前のバージョンではパスセパレータが;ではなかったためJVMが正しく処理できていませんでした。 rjb 0.2.1以降をお使いください。

質問 classファイルからのクラスのインポートがうまくいきません。

jarファイルからは問題なくクラスがロードできるのですが、 フォルダに配置したclassファイルからのロードがうまくいきません。

Class.forName(String name) も同様なのですが、 Class.forName(String name, boolean initialize, ClassLoader loader) で、classLoaderを明示してあげるとうまくいきました。

答え(by ryugate and arton):

rjb 0.2.3以降で修正されました。 Class#forName(String)はRjb::importと同様の動作となります。 またメソッドの戻り値がClassのインスタンスである場合もRjb::importと同等の処理が適用されます。 これらのimportされたオブジェクトをJavaのオブジェクトのメソッドへ引数として与えるとClassのインスタンスとして扱われます。

質問:Java側のメソッドを呼び出すとき、String型の引数にnilは渡せますか?

rjbでJavaのメソッドを呼び出すとき、String型の引数にnilを渡すと空文字列に変換されてしまうのですが、これはrjbの仕様なんでしょうか?(winebarrelさん)

回答(by arton)

バグです。0.2.4で修正しました。

Last modified:2007/04/14 22:54:35
Keyword(s):[Rjb]
References:[RubyJavaブリッヂ] [RubyJavaBridgeJa]