JRuby+Swing or SWT in NetBeans 6.0 Preview (M9)
JRubyが1.0になったので、NetBeansの参照先も1.0にしてみる。
ネットに落ちているJRuby+Swingのサンプルはけっこう1.0では動かない(JRuby付属のSwingサンプルはもちろん動くけど)。superclass must be a Classなんてエラーになってしまう。これはActionListenerをRuby側で継承しているのが原因。1.0で継承ではなくmixinになったようです。
ActionListener < Hoge
じゃなくて
ActionListener include Hoge
にする。インスタンスに対して動的にやっているなら、
listener = java.awt.event.ActionListener.new class << listener ... end
ではなくて
module Hoge ... end listener = java.awt.event.ActionListener.new listener.extends Hoge
にすればよい。
いっぽうのJRuby+SWT(Windowsでやる場合)は。dllの場所指定が必要。普通なら
- swt.jarおよびswt-*-win32-3236.dllを%JRUBY_BASE%\lib以下にコピー
- jruby.batに-Djava.library.path="%JRUBY_BASE%\lib"の追加
で良いのだけど、NetBeans上で実行させようとすると、上記をしてもなぜか、Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3236 in java.library.pathエラーになってしまって、どうもパスを見てくれてないような気がする。