シリアルポート経由でカードリーダーと対話する必要があるデスクトップ JavaFX 2.0 アプリケーションを構築しています。そのため、RxTx ライブラリ バージョン 2.1-7r2 32 ビットを使用しています。
最初のテスト/学習を行うために、Java コンソール アプリで RxTx 機能を構築し、ネイティブ DLL と jar ファイルをさまざまな 32 ビット JDK バージョンの jdk1.7.0_04 ディレクトリにコピーする手順に従って、うまく機能するようにしました。
次に、プリミティブ UI を使用して JavaFX アプリを作成し、RxTx コードをこの新しいプロジェクトに移行する作業を開始しました。この JavaFX アプリは、コンソール アプリに使用したものと同じ 32 ビット JDK を指しています。
JavaFX アプリは、gnu.io.* をインポートして、JavaDocs、オートコンプリートなどと同様に、NetBeans によって正しく認識されるコードを記述できるため、jar ファイルを完全に見つけます。残念ながら、実行時に次のエラーが返されます。ネイティブ DLL が見つからない:
Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.javafx.main.Main.launchApp(Main.java:486)
at com.javafx.main.Main.main(Main.java:638)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source)
at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NoClassDefFoundError: gnu/io/CommPortIdentifier
at testfxscreens.TestFXScreens.setupSerialPort(TestFXScreens.java:186)
at testfxscreens.TestFXScreens.start(TestFXScreens.java:61)
at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$3.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
at com.sun.glass.ui.win.WinApplication$2$1.run(Unknown Source)
... 1 more
Caused by: java.lang.ClassNotFoundException: gnu.io.CommPortIdentifier
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 9 more
RxTx のホームページを見て、上記のエラーの解決策の例を見つけましたが、JDK に DLL と JAR ファイルが正しくない可能性が高いことを示しているだけです。
同じJDKディレクトリを使用してコンソールアプリを完全に動作させることができるので、これは本当に奇妙です。本当に明らかに間違ったことをしていることを願っていますが、プロジェクトの設定をいじって、何かを台無しにしたと思わせることはしていません。
RxTx を機能させるための JavaFX 2.0 固有のプロジェクト設定はありますか?
これを追い詰めるためにどこを見るべきかについての指針、大歓迎です!!!