Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么gnu.io.PortInUseException会间歇性地弹出,但在我的应用程序的第一次运行时却从未弹出?_Java_Macos_Serial Port_Serial Communication_Rxtx - Fatal编程技术网

Java 为什么gnu.io.PortInUseException会间歇性地弹出,但在我的应用程序的第一次运行时却从未弹出?

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

我正在使用一堆定制的硬件(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();
    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)
...