我正在使用Rabbitmq构建一个android聊天应用程序,并且该项目的构建没有任何问题。但是,在创建ConnectionFactory对象时遇到问题。它给了我以下错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.zabu.kyimoecho.mosaic, PID: 9002
java.lang.NoClassDefFoundError: com.rabbitmq.client.impl.nio.-$$Lambda$NioParams$NrSUEb8m8wLfH2ztzTBNKyBN8fA
at com.rabbitmq.client.impl.nio.NioParams.<clinit>(NioParams.java:37)
at com.rabbitmq.client.ConnectionFactory.<init>(ConnectionFactory.java:153)
at com.zabu.kyimoecho.mosaic.GenericIdentity.<init>(GenericIdentity.kt:11)
at com.zabu.kyimoecho.mosaic.Admin.<init>(Admin.kt:9)
at com.zabu.kyimoecho.mosaic.MainActivity.<init>(MainActivity.kt:10)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我已经上网了,我遇到的建议并不能解决这个问题。
我正在使用Android 3.3.2,JDK 8和Rabbitmq 5.6.0。
build.gradle:
....
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
dependencies {
implementation 'com.rabbitmq:amqp-client:5.6.0'
.....
}
答案 0 :(得分:0)
仅供参考(如果有人遇到类似问题),我通过将build.gradle中的targetSdkVersion从24更改为27来解决了这个问题。
答案 1 :(得分:0)
我也遇到过同样的问题。如果您在RabbitMQ Documentation页上看到文档,则说明amqp-client:5.x系列库适用于Android 7(牛轧糖)及更高版本。如果您使用的是低于Android 7的任何Android版本,则可以使用amqp-client:4.x系列库。
我想同时使用两者,所以我获得了amqp-client:4.x系列库源代码之一,并使用稍有不同的软件包名称对其进行了重新编译,并使用了jar文件,以便可以同时使用更新的5.x。系列适用于较新的Android版本,而4.x系列适用于较低的Android版本。