问题描述
由于这个错误,我有一段时间很沮丧,我有一个 Android 应用程序,它在我的手机(android 版本 8)和我的妈妈(版本 10)上运行良好,但不能在我姐妹的 android 版本平板电脑上运行5.当应用程序要创建一个ClientConfig对象以在输入电话号码进行注册后发送短信时发生错误。它是:
Method threw 'java.lang.NoClassDefFoundError' exception.
这是堆栈跟踪:
0 = org.glassfish.jersey.client.ClientConfig$State.<init>(ClientConfig.java:160)
1 = org.glassfish.jersey.client.ClientConfig.<init>(ClientConfig.java:515)
2 = com.xyz.asd.services.UserServices.RegisterNewUser(UserServices.java:48)
原因还说:
java.lang.NoClassDefFoundError: org.glassfish.jersey.model.internal.CommonConfig
虽然我可以看到有
jersey-common-2.27.jar 我可以在包 org.glassfish.jersey.model.internal 上找到 CommonConfig。
这些是一些设置:
compileSdkVersion 30
minSdkVersion 14
targetSdkVersion 30
multiDexEnabled true
我已经清理了 Android Studio 的 gradle 和所有缓存,清理了项目,使用了一些 Dex 选项,但什么也没发生。在发送之前阅读有关 NoClassDefFoundError 堆栈溢出的所有相关问题。
我将不胜感激...
解决方法
在谷歌搜索并尝试了一些方法之后,糖救了我!
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
然后我们需要添加:
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
....
}
而且它工作正常......
这里是对糖的一些描述: java-8-in-android-apps 这是开发人员的资源: Use Java 8 language features and APIs