2

Eclipse を実行してプログラムをコンパイルすると、一度だけ動作し、最初のプログラムの実行後にもう一度実行しようとすると、次のメッセージが表示されます。

Exception in thread "main" Persistence is already in use

この問題を解決するには、Eclipse を閉じて再度開く必要があります。毎回同じことが起こります。それ以外の場合は、プログラムを 1 回実行できます。投稿されたメッセージが表示されます。

そのエラーは何を意味し、どうすれば修正できますか?

アップデート

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)
4

1 に答える 1

1

元のバージョンのプログラムを実際にシャットダウンしていることを確認します (コンソールの赤い十字をクリックします)。

シャットダウンしていないバックグラウンド (MQTT) スレッドがいくつかある可能性があるため、アプリケーションの実行を維持し、永続化ディレクトリのロックを保持します。

于 2014-11-28T11:21:55.300 に答える