我正在尝试在 Android 中建立 MQTT 连接,但存在一些运行时错误

问题描述 投票:0回答:0

我有 MQTT 测试客户端的代码,我正在尝试连接公共 HiveMQ Broker,但存在一些运行时异常,我无法解决这个问题。

这里是

MainActivity.java
文件的堆栈跟踪和代码。

package com.tanmay.helloworld;

import static androidx.constraintlayout.helper.widget.MotionEffect.TAG;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import org.eclipse.paho.android.service.MqttAndroidClient;
import org.eclipse.paho.client.mqttv3.IMqttActionListener;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.IMqttToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttCallbackExtended;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;

public class MainActivity extends AppCompatActivity {

    String serverUrl = "tcp://broker.hivemq.com:1883";
    String clientId = "123";
    
    
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        button = findViewById(R.id.button);
    
        MqttAndroidClient client = new MqttAndroidClient(getApplicationContext(),serverUrl,clientId);
        MqttConnectOptions options = new MqttConnectOptions();
        options.setCleanSession(true);
        options.setUserName("Admin");
        options.setPassword("Admin".toCharArray());
    
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    IMqttToken token = client.connect(options);
                    Toast.makeText(MainActivity.this, "Client Connected", Toast.LENGTH_SHORT).show();
                } catch (MqttException e) {
                    Toast.makeText(MainActivity.this, "Client was not able to connect", Toast.LENGTH_SHORT).show();
                    throw new RuntimeException("String error"+e);
                }
            }
        });    
    }
}
2023-05-04 22:30:57.44 468-468 AndroidRuntime          com.tanmay.helloworld                E  FATAL EXCEPTION: main
Process: com.tanmay.helloworld, PID: 468
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/LocalBroadcastManager;
at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:450)
at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:428)
at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:334)
at com.tanmay.helloworld.MainActivity$.onClick(MainActivity.java:50)
at android.view.View.performClick(View.java:7448)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:202)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:80)
at android.view.View$PerformClick.run(View.java:28305)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.LocalBroadcastManager" on path: DexPathList[[zip file "/data/app/~~qPAk0jHRCk_VS0tccfnOQ==/com.tanmay.helloworld-Q-5Yca9SapvvvBY2CXk2Gw==/base.apk"],nativeLibraryDirectories=[/data/app/~~qPAk0jHRCk_VS0tccfnOQ==/com.tanmay.helloworld-Q-5Yca9SapvvvBY2CXk2Gw==/lib/x86, /system/lib, /system_ext/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:32)
at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:450) 
at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:428) 
at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:334) 
at com.tanmay.helloworld.MainActivity$.onClick(MainActivity.java:50) 
at android.view.View.performClick(View.java:7448) 
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:202) 
at android.view.View.performClickInternal(View.java:7425) 
at android.view.View.access$3600(View.java:80) 
at android.view.View$PerformClick.run(View.java:28305) 
at android.os.Handler.handleCallback(Handler.java:938) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:223) 
at android.app.ActivityThread.main(ActivityThread.java:7656) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

我正在尝试创建一个可以通过 MQTT 协议发布和订阅 JSON 有效负载的应用程序。

java android mqtt iot paho
© www.soinside.com 2019 - 2024. All rights reserved.