我有一个Java程序,它在运行时连接到com端口。我只有一个.JAR文件。我最近试图将其从程序运行的机器移动到另一台机器。我知道串口设备可以在新机器上工作,因为我可以通过一个名为Putty的程序与它们进行交互。当我执行.JAR文件时,它出现并且似乎运行得很好,但是无法连接到com端口。这可能是安装在另一台机器的JRE中的缺失库吗?我如何找出使该程序运行的缺失?
答案 0 :(得分:3)
是的,很可能是问题所在。 Java中的传统端口(并行和串行端口)支持由Java Communications API提供,它依赖于本机代码来支持对这些端口的低级访问。该API是JDK的扩展,而不是它的一部分。
当然也可能是在新机器上运行程序的用户没有访问端口的权限,这是一个不同的问题。
编辑:对于传统端口的跨平台支持,即使您只打算在一个平台中使用您的程序,我推荐使用RXTX,这是JavaComm的开源替代品。答案 1 :(得分:1)
打开jar,查看META-INF / MANIFEST.MF文件以查看它是否指定任何jar依赖项。 如果没有,JAR可能正在使用一些本机库连接到COM端口。
答案 2 :(得分:0)
将串口与Java一起使用通常需要将已编译的本机(.so或.dll)文件添加到LD_LIBRARY_PATH。
我认为您正在使用Linux,因此请在原始计算机上查找名为librxtxSerial.so的文件(在Windows上称为rxtxSerial.dll)
可以通过几种方式设置库路径,但最好的办法是在原始Java安装中检查此文件:
e.g。 /jre/lib/i386/librxtxSerial.so
要注意的另一件事是rxtx jar本身(这可能已经捆绑在你的jar中,或者可能没有)。
只需按照RXTX网站上的说明即可获得更好的结果,但我会首先尝试了解原始安装。
祝你好运!