0

シリアルポート経由でカードリーダーと対話する必要があるデスクトップ 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 固有のプロジェクト設定はありますか?

これを追い詰めるためにどこを見るべきかについての指針、大歓迎です!!!

4

1 に答える 1

2

Andre、RXTXライブラリを正常に動作するJava Swingアプリを新しいJavaFXアプリに移植しています。コンパイルの問題はありませんが、実行時に同じエラーが発生します。解決策:HD(私の場合は/system/library/java/Extensions/RXTXComm.jar)でライブラリを見つけ、プロジェクトのプロパティパネルを開き、ライブラリに移動し、[コンパイル]ボタンオプションを選択して[Jar/Folderの追加]をクリックします。 RXTXComm.jarをリストに追加します。

于 2012-12-06T01:30:52.883 に答える