Java CommPortIdentifier.GetPortIdentifier为空

Java CommPortIdentifier.GetPortIdentifier为空,java,serial-port,javax.comm,Java,Serial Port,Javax.comm,我正在构建一个简单的应用程序,它使用Java通信API javax.comm通过串口进行通信 以下是我编写的java main方法中的一些代码: CommPortIdentifier cpi = null; Enumeration e = CommPortIdentifier.getPortIdentifiers(); while (e.hasMoreElements()) { try { cpi = (Co

我正在构建一个简单的应用程序,它使用Java通信API javax.comm通过串口进行通信

以下是我编写的java main方法中的一些代码:

CommPortIdentifier cpi = null;
        Enumeration e = CommPortIdentifier.getPortIdentifiers();
        while (e.hasMoreElements()) {
            try {
                cpi = (CommPortIdentifier) e.nextElement();
            } catch (NoSuchElementException n) {

            }
            System.out.println(cpi.getName());
        }
枚举e始终为空,即使运行此枚举时连接到COM 4端口

另外,运行此代码:

portRead = CommPortIdentifier.getPortIdentifier("COM8");
导致抛出
NoSuchPortException

我想我已经正确地完成了安装部分,并将属性文件win32com.dll文件放在了正确的位置

你知道可能是什么问题吗


谢谢

确保win32com.dll(javax.com附带)位于jre\bin目录中。
确保javax.comm.properties(随javax.com一起提供)位于jdk\lib目录中。

查找设备工作的端口(尝试power shell或hyper terminal查找所有com端口)

请记住,始终需要将所有解压缩文件从javax.comm.zip添加到jre

win32com.dll-jre/bin

comm.jar-jre/lib/ext

java.comm.properties-jre/lib(添加此项后,我发现已解决异常问题)

这对我来说很有效(我安装了x86 jdk),并遵循以下步骤操作

您的问题是windows无法将正确的端口与JAVA程序通信

您必须按照此链接将正确的文件复制到正确的位置


请注意,不鼓励使用仅链接的答案,因此答案应该是搜索解决方案的终点(与另一个参考文献的中途停留相比,后者往往会随着时间的推移而过时)。请考虑在这里添加一个独立的概要,将链接作为参考。