出现java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/content/LocalBroadcastManager,错误如下:
I/AiotMqtt: clientId:a1PEhSDiv4d.Device0|timestamp=1712294414701,_v=paho-android-1.0.0,securemode=2,signmethod=hmacsha256| userNameDevice0&a1PEhSDiv4d passWord6df76fda56c15d87a043cef0512165cd97b0469819f030ec1f523f804c283da1
I/AiotMqtt: create mqtt connect options succeed
I/AiotMqtt: create mqtt client
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mqttclinet, PID: 10280
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 com.example.mqttclinet.Alot.AIotClient.connect(AIotClient.java:100)
at com.example.mqttclinet.MainActivity.lambda$mqttConnect$0$com-example-mqttclinet-MainActivity(MainActivity.java:28)
at com.example.mqttclinet.MainActivity$$ExternalSyntheticLambda0.onClick(D8$$SyntheticClass)
at android.view.View.performClick(View.java:5212)
at android.view.View$PerformClick.run(View.java:21214)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5619)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.content.LocalBroadcastManager" on path: DexPathList[[zip file "/data/app/com.example.mqttclinet-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.mqttclinet-1/lib/arm, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at org.eclipse.paho.android.service.MqttAndroidClient.registerReceiver(MqttAndroidClient.java:450)
at org.eclipse.paho.android.service.MqttAndroidClient.connect(MqttAndroidClient.java:428)
at com.example.mqttclinet.Alot.AIotClient.connect(AIotClient.java:100)
at com.example.mqttclinet.MainActivity.lambda$mqttConnect$0$com-example-mqttclinet-MainActivity(MainActivity.java:28)
at com.example.mqttclinet.MainActivity$$ExternalSyntheticLambda0.onClick(D8$$SyntheticClass)
at android.view.View.performClick(View.java:5212)
at android.view.View$PerformClick.run(View.java:21214)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5619)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)
Suppressed: java.lang.ClassNotFoundException: android.support.v4.content.LocalBroadcastManager
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 15 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
分析看:引用或加载错误,其实是需要使用Android自动转换第三方库。
解决方法:在gradle.properties文件中添加如下属性:
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true