簡體   English   中英

java javax.comm

[英]java javax.comm

嗨,我正在嘗試讀取 com 端口,所以我將庫添加到我的 java 目錄中,就像他們在這里寫的一樣,但是當我使用簡單的代碼時

import java.util.Enumeration;
import javax.comm.*;

public class CompotCore {

    public static void main(String[] args) 
    {
        Enumeration list = CommPortIdentifier.getPortIdentifiers();
    }

}

我收到這樣的錯誤:

java.lang.UnsatisfiedLinkError: no Serial in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
    at java.lang.Runtime.loadLibrary0(Runtime.java:840)
    at java.lang.System.loadLibrary(System.java:1047)
    at gnu.io.RXTXCommDriver.<clinit>(RXTXCommDriver.java)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at javax.comm.CommPortIdentifier.loadDriver(CommPortIdentifier.java:237)
    at javax.comm.CommPortIdentifier.<clinit>(CommPortIdentifier.java:109)
    at CompotCore.main(CompotCore.java:11)
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.sun.comm.SunrayInfo.isSessionActive()Z
    at com.sun.comm.SunrayInfo.isSessionActive(Native Method)
    at com.sun.comm.Portmapping.registerCommPorts(Portmapping.java:155)
    at com.sun.comm.Portmapping.refreshPortDatabase(Portmapping.java:100)
    at javax.comm.CommPortIdentifier.<clinit>(CommPortIdentifier.java:138)
    at CompotCore.main(CompotCore.java:11)

我讀到我必須添加System.load("Serial"); 具有完整路徑,但我沒有這樣的庫,也不知道在哪里可以找到它。

在您鏈接到它的站點上,包含將兩個本機庫復制到您的 JRE lib 目錄中的說明:

cp rxtx-bins.1/1.4/i386-pc-linux/libParallel.so /usr/java/j2sdk1.4.0/jre/lib/i386/
cp rxtx-bins.1/1.4/i386-pc-linux/libSerial.so /usr/java/j2sdk1.4.0/jre/lib/i386/

他們在嗎?

確保將它們復制到正確的 JRE 中。 which java告訴你什么?

復制到 jre/lib 的另一種方法是將它們放在其他位置,然后使用系統屬性java.library.path指向該目錄,例如,您可以像這樣執行 Java 來啟動您的程序

java -Djava.library.path=<dir_with_those_libs> <your_other_args>

更新

好的,我下載了 rtxt tar 並查看了一下。 解壓后,您有以下內容(一個示例):

ls -l rxtx-bins.1/1.4/i386-pc-linux/
total 44
-rwxr-xr-x 1 root root  9700 Dec  5  2001 libParallel-1.4.15.so
lrwxrwxrwx 1 root root    21 Jul  6 03:23 libParallel.so -> libParallel-1.4.15.so
-rwxr-xr-x 1 root root 31400 Dec  5  2001 libSerial-1.4.15.so
lrwxrwxrwx 1 root root    19 Jul  6 03:23 libSerial.so -> libSerial-1.4.15.so

如果您按照該頁面的說明進行操作,您將只復制鏈接,而不是實際的庫。 所以解決方案是復制所有文件,如下所示:

cp rxtx-bins.1/1.4/i386-pc-linux/* /usr/java/j2sdk1.4.0/jre/lib/i386/

或者執行 Java 類似:

java -Djava.library.path=~/rxtx-bins.1/1.4/i386-pc-linux:$LD_LIBRARY_PATH <your_other_args>

您鏈接到的頁面可讓您下載 RXTX package。 在該存檔文件中,有不同平台所需的本機庫。

您只需確保 Java 可以找到您正在使用的操作系統的相關本機庫。 您可以通過在java.library.path系統屬性中指定包含本機庫的目錄來做到這一點,您可以像這樣在命令行上設置它:

java -Djava.library.path=C:\Folder\That\Contains\TheDLL CompotCore

對於 Linux,顯然:

java -Djava.library.path=/folder/that/contains/the_so CompotCore

(當然,替換命令中的實際目錄)。

暫無
暫無

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

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