簡體   English   中英

無法在JavaFX應用程序中找到RXTX本機DLL

[英]Unable to locate RXTX native DLLs in a JavaFX app

我正在構建一個桌面JavaFX 2.0應用程序,需要通過串行端口與讀卡器進行交互。 所以我使用的是RxTx庫版本2.1-7r2 32bit。

為了做一些初步測試/學習,我在一個java控制台應用程序中構建了RxTx功能,並通過按照指令將本機DLL和jar文件復制到我的各種32位JDK版本jdk1.7.0_04目錄中,使其工作得很好。

然后我創建了一個帶有原始UI的JavaFX應用程序,並開始將RxTx代碼遷移到這個新項目。 這個JavaFX應用程序指向我用於我的控制台應用程序的相同32位JDK。

JavaFX應用程序完美地定位jar文件,因為我可以導入gnu.io. *然后編寫NetBeans正確識別的代碼,以及JavaDocs,自動完成等。不幸的是,在執行時它會返回以下錯誤,這些錯誤看起來像是未找到本機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目錄獲得控制台應用程序,完美運行。 我希望我做的事情顯然是錯的,但我沒有擺弄項目設置讓我覺得我搞砸了。

是否有任何JavaFX 2.0特定的項目設置可以使RxTx工作?

任何關於在哪里尋找捕獲這一點的指針,非常感謝!

安德烈,我正在移植一個java Swing應用程序,它使用RXTX庫正常工作到一個新的JavaFX應用程序,沒有編譯問題,但運行時出現相同的錯誤。 解決方案:在HD中找到庫(在我的案例中為/system/library/java/Extensions/RXTXComm.jar),打開項目屬性pannel,轉到庫,選擇按鈕選項Compile並單擊Add Jar / Folder,添加RXTXComm.jar到列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM