Java 为什么gnu.io.PortInUseException会间歇性地弹出,但在我的应用程序的第一次运行时却从未弹出?
我正在使用一堆定制的硬件(RFID阅读器),并使用NRJavaSerial 3.11.0与他们交谈。我的目标操作系统是El Capitan,目标机器是运行El Capitan 10.11.1至10.11.4的mac Mini或iMac,这意味着无人值守。以下是我用来连接设备的代码 退出时,运行此代码Java 为什么gnu.io.PortInUseException会间歇性地弹出,但在我的应用程序的第一次运行时却从未弹出?,java,macos,serial-port,serial-communication,rxtx,Java,Macos,Serial Port,Serial Communication,Rxtx,我正在使用一堆定制的硬件(RFID阅读器),并使用NRJavaSerial 3.11.0与他们交谈。我的目标操作系统是El Capitan,目标机器是运行El Capitan 10.11.1至10.11.4的mac Mini或iMac,这意味着无人值守。以下是我用来连接设备的代码 退出时,运行此代码 public void close() throws IOException { //this.stopReadingUltraLight(); in.close(); S
public void close() throws IOException
{
//this.stopReadingUltraLight();
in.close();
System.out.println("Inputstream closed.");
out.close();
System.out.println("Outputstream closed.");
serialPort.removeEventListener();
System.out.println("Event listeners removed.");
serialPort.close();
System.out.println("serial Port closed.");
commPort.close();
System.out.println("Comm port closed.");
}
应用程序的第一次运行工作正常,正如预期的那样。串行设备的使用是通过在许多循环中使用的输入和输出流来实现的。但是,有时候,当我退出应用程序时,它似乎会中断端口。应用程序的后续启动显示此异常:
gnu.io.PortInUseException: Unknown Application
at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:475)
at main.java.RFIDReader.<init>(RFIDReader.java:48)
at main.java.RFIDBridge.<init>(RFIDBridge.java:151)
at main.java.WebHandler.lambda$0(WebHandler.java:379)
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
...
gnu.io.portinUseeException:未知应用程序
在gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:475)
位于main.java.RFIDReader。(RFIDReader.java:48)
位于main.java.RFIDBridge(RFIDBridge.java:151)
lambda$0(WebHandler.java:379)
位于com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
...
一旦出现此错误,在物理断开并重新连接设备之前,任何应用程序(coolterm等)都不能使用该设备。Coolterm抛出一个“错误83”lsof | grep usbmodem
显示当前没有进程拥有该设备。我还创建了var/lock
目录,并在其上运行chmod777
。我现在有点力不从心了,不知道设备的所有权锁在哪里了。有什么想法吗
java:48表示行commPort=portIdentifier.open(this.getClass().getName(),2000)代码>在我的设备连接部分
gnu.io.PortInUseException: Unknown Application
at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:475)
at main.java.RFIDReader.<init>(RFIDReader.java:48)
at main.java.RFIDBridge.<init>(RFIDBridge.java:151)
at main.java.WebHandler.lambda$0(WebHandler.java:379)
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
...