2014-11-28 2 views
2

При запуске Eclipse, и скомпилировать свою программу, она работает только один раз, и после первого выполнения программы, если я попытался запустить его снова я получаю:Исключения в потоке «основное» Постоянство уже используется

Exception in thread "main" Persistence is already in use

Чтобы решить эту проблему, я должен закрыть Eclipse и снова открыть ее, и то же самое происходит каждый раз, я могу запустить свою программу, иначе я получаю сообщение.

Что означает эта ошибка и как ее исправить?

UPDATE

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"); 
    } 
} 

Console_output:

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) 

ответ

1

Убедитесь, что вы на самом деле завершение первоначальной версии программы (щелкните красный крест в консоли).

Возможно, у вас есть некоторые потоки фона (MQTT), которые не завершают работу, поэтому поддерживая приложение и удерживая блокировку в каталоге сохранения.

+0

теперь после каждого извлечения в мою программу я завершаю его, и он удаляет все завершенные запуски. когда я снова запускаю prog, он отлично работает (публикует или подписывается), но в конце экрана консоли я всегда получаю сообщение в вышеупомянутом обновленном обновлении. пожалуйста, дайте мне знать, как я могу прекратить его получать – rmaik