gpt4 book ai didi

java - 导出的 JAR 文件未检测到串口

转载 作者:行者123 更新时间:2023-12-04 18:05:17 25 4
gpt4 key购买 nike

这段代码应该做什么:检测所有串行端口并将端口名称打印到屏幕上。

问题:在eclipse中运行时,程序检测串口正常;但是,在导出可运行的 jar 并运行该 jar 后,该 jar 检测不到任何端口。我非常怀疑这与实际代码本身有什么关系(因为它在 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;
}

如果您还有其他需要了解或想看的内容,请提出来,您会得到的!

最佳答案

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

这解决了我的问题

关于java - 导出的 JAR 文件未检测到串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28179919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com