javajavax。通信
嗨,我正在尝试读取com端口,所以我将库添加到我的java目录中,如 they wrote here但是当我看到像
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");
,但我没有这样的库,也不知道在哪里可以找到它
# 1 楼答案
you linked to提供给您下载RXTX包的页面。在该归档文件中,有用于不同平台的本机库
您只需确保Java能够找到您正在使用的操作系统的相关本机库。您可以通过在
java.library.path
系统属性中指定包含本机库的目录来实现这一点,您可以在命令行上这样设置:对于Linux,显然:
(当然,替换命令中的实际目录)
# 2 楼答案
在您链接到的站点上,它包括将两个本机库复制到JRE lib目录的说明:
他们在吗
确保您正在将它们复制到正确的JRE中。{}告诉你什么
复制到jre/lib的另一种方法是将它们放在其他位置,然后用系统属性
java.library.path
指向该目录,例如,您可以这样执行Java来启动程序java -Djava.library.path=<dir_with_those_libs> <your_other_args>
更新
好的,我下载了rtxt tar并查看了一下。解压后,您将看到以下内容(一个示例):
如果您按照该页面中的说明进行操作,您将只复制了链接,而不是实际的LIB。因此,解决方案是复制所有文件,如下所示:
或者,也可以执行类似以下内容的Java: