[英]Jersey Servlet - java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
[英]java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException after updating to Android Studio 4.2
谷歌刚刚发布了 Android Studio 4.2 稳定版。 我将我的 AS 从 4.1 更新到 4.2。 现在我收到了这个错误。 它在数据绑定中显示错误。
Caused by: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: android.databinding.annotationprocessor.ProcessDataBinding Unable to get public no-arg constructor
at kotlin.collections.CollectionsKt___CollectionsKt.toCollection(_Collections.kt:1200)
at kotlin.collections.CollectionsKt___CollectionsKt.toMutableList(_Collections.kt:1233)
at kotlin.collections.CollectionsKt___CollectionsKt.toList(_Collections.kt:1224)
at org.jetbrains.kotlin.kapt3.base.ProcessorLoader.doLoadProcessors(ProcessorLoader.kt:80)
at org.jetbrains.kotlin.kapt3.base.ProcessorLoader.loadProcessors(ProcessorLoader.kt:45)
at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:42)
... 28 more
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
... 34 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
... 34 more
通过执行以下步骤,我解决了这个问题,而没有用 JAVA 8 替换 JDK。
第 1 步:在gradle-wrapper.properties
distributionUrl
更新为https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
Step 2: Update your gradle tool classpath to 'com.android.tools.build:gradle:4.2.1'
in your root buid.gradle
我有同样的问题,我已经解决了。 我发现 Android studio 4.2 会使 JDK 更新到 Java11,它会导致你描述的错误。
您可以删除 Java11 JDK 并替换为 Java8 (/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home)。
您也可以卸载 Android Studio,然后重新安装。
如果您使用的是 Ubuntu,那么只需在菜单 File > Project Structure > JDK Location 中将 JDK 位置更改为 JAVA (JDK) 1.8
我以为是jdk路线,经过几个小时的搜索,这对我有用
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
在您的 build.gradle 文件中添加和更新 kotlin_version
ext.kotlin_version = '1.4.32'
dependencies {
classpath 'com.android.tools.build:gradle:4.2.1'
}
如果您使用 enableAapt2 将其从 gradle.properties 文件中删除
org.gradle.jvmargs=-Xmx1536M -Dkotlin.daemon.jvm.options\="-Xmx1536M"
#android.enableAapt2=false
android.useAndroidX=true
android.enableJetifier=true
有两种方法可以解决这个问题
android {
packagingOptions {
exclude 'AndroidManifest.xml'
}
}
If you are coming here having Android Studio Arctic Fox which comes by default with Java 11, you need to use java 1.8 to find necessary classes which are completely removed in java 11 upgrade.
在Android Studio北极狐中设置的路径如下
首选项 > 构建执行部署 > Gradle > Gradle Sdk
选择下载 JDK,然后选择 Java 1.8.x 版本并重建项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.