尝试连接后MQTtandroidClient崩溃

发布于 2025-02-02 18:28:06 字数 6268 浏览 3 评论 0 原文

我正在尝试通过我的Android应用程序实现MQTT连接,我想从一个简单的项目开始,以更好地了解其工作原理。

我遵循了有关如何在Android上实施的指南

似乎每次尝试连接时都会崩溃,这是

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.IMqttToken;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttException;

public class MainActivity extends AppCompatActivity {

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String clientId = MqttClient.generateClientId();
                MqttAndroidClient client =
                        new MqttAndroidClient(getApplicationContext(), "tcp://broker.hivemq.com:1883",
                                clientId);

                try {
                    IMqttToken token = client.connect();
                    token.setActionCallback(new IMqttActionListener() {
                        @Override
                        public void onSuccess(IMqttToken asyncActionToken) {
                            // We are connected
                            Toast.makeText(MainActivity.this,"Connected",Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                            // Something went wrong e.g. connection timeout or firewall problems
                            Toast.makeText(MainActivity.this,"not Connected",Toast.LENGTH_SHORT).show();

                        }
                    });
                } catch (MqttException e) {
                    e.printStackTrace();
                }
            }
        });
    }

我尝试启动应用程序

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mqtt_example, PID: 14009
    java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/LocalBroadcastManager;
        at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:445)
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:423)
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:354)
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:309)
        at com.example.mqtt_example.MainActivity$1.onClick(MainActivity.java:35)
        at android.view.View.performClick(View.java:7509)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
        at android.view.View.performClickInternal(View.java:7486)
        at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
        at android.view.View$PerformClick.run(View.java:29254)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7886)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.LocalBroadcastManager" on path: DexPathList[[dex file "/data/data/com.example.mqtt_example/code_cache/.overlay/base.apk/classes3.dex", zip file "/data/app/~~EKUBABCjOwHTHnCyRoBb4g==/com.example.mqtt_example-eS4mjx8PBVjMHJvKyDkdvw==/base.apk"],nativeLibraryDirectories=[/data/app/~~EKUBABCjOwHTHnCyRoBb4g==/com.example.mqtt_example-eS4mjx8PBVjMHJvKyDkdvw==/lib/x86_64, /system/lib64, /system_ext/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:445) 
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:423) 
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:354) 
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:309) 
        at com.example.mqtt_example.MainActivity$1.onClick(MainActivity.java:35) 
        at android.view.View.performClick(View.java:7509) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194) 
        at android.view.View.performClickInternal(View.java:7486) 
        at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0) 
        at android.view.View$PerformClick.run(View.java:29254) 
        at android.os.Handler.handleCallback(Handler.java:942) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loopOnce(Looper.java:201) 
        at android.os.Looper.loop(Looper.java:288) 
        at android.app.ActivityThread.main(ActivityThread.java:7886) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 

的 代码非常糊状欣赏< 3

I am trying to implement a MQTT connection with my android application and i wanted to start with a simple project to better understand how it works.

i followed this guide on how to implement it on android
https://www.hivemq.com/blog/mqtt-client-library-enyclopedia-paho-android-service/

it seems to crash every time i try to connect, here is my code

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.IMqttToken;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttException;

public class MainActivity extends AppCompatActivity {

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String clientId = MqttClient.generateClientId();
                MqttAndroidClient client =
                        new MqttAndroidClient(getApplicationContext(), "tcp://broker.hivemq.com:1883",
                                clientId);

                try {
                    IMqttToken token = client.connect();
                    token.setActionCallback(new IMqttActionListener() {
                        @Override
                        public void onSuccess(IMqttToken asyncActionToken) {
                            // We are connected
                            Toast.makeText(MainActivity.this,"Connected",Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                            // Something went wrong e.g. connection timeout or firewall problems
                            Toast.makeText(MainActivity.this,"not Connected",Toast.LENGTH_SHORT).show();

                        }
                    });
                } catch (MqttException e) {
                    e.printStackTrace();
                }
            }
        });
    }

when i try to launch the application here is the message that appears

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mqtt_example, PID: 14009
    java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/LocalBroadcastManager;
        at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:445)
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:423)
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:354)
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:309)
        at com.example.mqtt_example.MainActivity$1.onClick(MainActivity.java:35)
        at android.view.View.performClick(View.java:7509)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194)
        at android.view.View.performClickInternal(View.java:7486)
        at android.view.View.-$Nest$mperformClickInternal(Unknown Source:0)
        at android.view.View$PerformClick.run(View.java:29254)
        at android.os.Handler.handleCallback(Handler.java:942)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7886)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.LocalBroadcastManager" on path: DexPathList[[dex file "/data/data/com.example.mqtt_example/code_cache/.overlay/base.apk/classes3.dex", zip file "/data/app/~~EKUBABCjOwHTHnCyRoBb4g==/com.example.mqtt_example-eS4mjx8PBVjMHJvKyDkdvw==/base.apk"],nativeLibraryDirectories=[/data/app/~~EKUBABCjOwHTHnCyRoBb4g==/com.example.mqtt_example-eS4mjx8PBVjMHJvKyDkdvw==/lib/x86_64, /system/lib64, /system_ext/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:445) 
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:423) 
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:354) 
        at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:309) 
        at com.example.mqtt_example.MainActivity$1.onClick(MainActivity.java:35) 
        at android.view.View.performClick(View.java:7509) 
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1194) 
        at android.view.View.performClickInternal(View.java:7486) 
        at android.view.View.-$Nest$mperformClickInternal(Unknown Source:0) 
        at android.view.View$PerformClick.run(View.java:29254) 
        at android.os.Handler.handleCallback(Handler.java:942) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loopOnce(Looper.java:201) 
        at android.os.Looper.loop(Looper.java:288) 
        at android.app.ActivityThread.main(ActivityThread.java:7886) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 

any help is very mush appreciated<3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文