此代码段应该执行的操作:检测所有串行端口并将端口名称打印到屏幕上。
问题:在eclipse中运行时,程序检测串口很好;但是,在导出可运行的jar并运行jar之后,jar会检测到NO端口。我非常怀疑这与实际的代码本身有什么关系(因为它在eclipse中运行得很好)但是我已经把代码段放在了以防我错过了什么。
我尝试/已经完成/看过的内容:
我认为它可能只是我的电脑,所以我已经尝试在不同的电脑上运行jar,但收到了相同的结果。我还确保一切都在正确的位置(jar文件,.dll文件和属性文件)。我检查了四倍,以确保我的构建路径包含正确的文件。
我已经探索过了: http://www.oracle.com/technetwork/java/index-139971.html
我花了最后一小时搜索与我类似的问题的网站和SO问题,但我找不到解决方案。
这是我根据以下代码设置的网站:http://en.wikibooks.org/wiki/Serial_Programming/Serial_Java#JavaComm_API
问题: 为什么会发生这种情况/如何解决此问题?
其他信息:我正在使用javax.comm
,使用32位版本的jdk 1.8.0_31,运行Windows 8. jar文件运行正常(有一个单独的组件,它完美地工作)。编译(或警告)期间没有错误,也没有抛出异常。我正在使用java -jar program.jar
运行jar。我知道我的电脑有一个串口,因为当我运行程序时,eclipse会显示COM1。 (该程序也能够检测到并行端口,但仅限于eclipse)
boolean portsDetected = false;
Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();
while (portIdentifiers.hasMoreElements()) {
CommPortIdentifier pid = (CommPortIdentifier)portIdentifiers.nextElement();
if ((pid.getPortType() == CommPortIdentifier.PORT_SERIAL)) {
System.out.println(pid.getName());
portsDetected = true;
}
}
if (!portsDetected) {
System.out.println("No serial ports detected");
return 0;
}
如果您还需要了解或希望看到的任何其他内容,请询问,您将收到!
答案 0 :(得分:0)
1. Copy win32.dll file to c:\ProgramFiles\java\jdk\bin
2. Copy comm.jar file to c:\ProgramFiles\java\jdk\lib
3. Copy javax.comm properties file to c:\ProgramFiles\java\jdk\lib
4. Copy
win32com.dll to jre/bin
comm.jar to jre/lib/ext
java.comm.properties to jre/lib
Note:Add all files in step 4 to both JRE. Jre Dir and Jre in JDK folder
这解决了我的问题