您好,我正在尝试读取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");,但我没有这样的库,也不知道在哪里可以找到它。
发布于 2011-07-06 15:00:58
在您链接的站点上,它包含将两个本机库复制到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>发布于 2011-07-06 15:04:26
you linked to提供给您下载RXTX包的页面。在该存档文件中有不同平台所需的本地库。
您只需确保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(当然,替换命令中的实际目录)。
https://stackoverflow.com/questions/6592548
复制相似问题