【问题标题】:Exception in thread "main" Persistence is already in use线程“主”持久性中的异常已在使用中
【发布时间】:2014-11-28 11:04:40
【问题描述】:

当我运行 Eclipse 并编译我的程序时,它只运行一次,在第一次执行程序后,如果我再次尝试运行它,我会收到:

Exception in thread "main" Persistence is already in use

为了解决这个问题,我必须关闭Eclipse并重新打开它,每次都会发生同样的事情,我可以运行我的程序一次,否则我会收到发布的消息。

这个错误是什么意思,我该如何解决?

更新

client != null
Client is Connected
synchCB->@onSuccess(): Connection Successfull
Client is CONNECTED and Resources will be released.
AsynchCB->@deliveryComplete(): 
MSG: .00088782
Exception in thread "main" Verbindung zu Client ist hergestellt (32100)
    at  
  org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:31)
    at org.eclipse.paho.client.mqttv3.internal.ClientComms.close(ClientComms.java:166)
    at org.eclipse.paho.client.mqttv3.MqttAsyncClient.close(MqttAsyncClient.java:873)
    at org.eclipse.paho.client.mqttv3.MqttClient.close(MqttClient.java:401)
    at com.example.mqtt_java.MainClass.releaseResources(MainClass.java:87)
    at com.example.mqtt_java.MainClass.main(MainClass.java:53)

代码

client = new MqttClient(serverURI, clientID);
    //client = MQTTClientFactory.newClient(IP, PORT, clientID);

    if (client != null) {
        System.out.println("client is not null");

        //client.setCallback(AsynchCB);
        //IMqttToken token = client.connectWithResult(opts);
        client.connect();
        if (client.isConnected()) {
            System.out.println("Client is Connected");

            client.publish(TOPIC, "33300".getBytes(), QoS, false);
            client.close();
            client.disconnect();
        }else {
            System.out.println("client is not connected");
        }
    }else {
        System.out.println("client = null");
    }
}

控制台输出

Exception in thread "main" Persistenz wird bereits verwendet (32200)
at   
 rg.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence.open(MqttDefaultFilePersistence.java:112)
at org.eclipse.paho.client.mqttv3.MqttAsyncClient.<init>(MqttAsyncClient.java:286)
at org.eclipse.paho.client.mqttv3.MqttAsyncClient.<init>(MqttAsyncClient.java:167)
at org.eclipse.paho.client.mqttv3.MqttClient.<init>(MqttClient.java:224)
at org.eclipse.paho.client.mqttv3.MqttClient.<init>(MqttClient.java:136)
at com.example.mqtt_java.MainClass.main(MainClass.java:47)

【问题讨论】:

    标签: java multithreading mqtt paho


    【解决方案1】:

    检查您是否确实关闭了程序的原始版本(单击控制台中的红叉)。

    您可能有一些未关闭的后台 (MQTT) 线程,因此保持应用程序运行并保持对持久性目录的锁定。

    【讨论】:

    • 现在每次执行我的程序后,我都会终止他的控制台并删除所有终止的启动。当我再次运行 prog 时,它工作正常(发布或订阅),但在控制台屏幕结束时,我总是在上面发布的更新中收到消息。请让我知道我怎样才能停止接收它
    猜你喜欢
    • 2016-03-11
    • 2016-06-13
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2011-09-15
    相关资源
    最近更新 更多