java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException after updating to Android Studio 4.2
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException after updating to Android Studio 4.2
Google 刚刚发布 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
我有同样的问题,我已经解决了。我发现 Android studio 4.2 会将 JDK 更新为 Java11,这会导致您描述的错误。
您可以删除 Java11 JDK 并替换为 Java8 (/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home).
您也可以卸载 Android Studio,然后重新安装。
Android Studio 4.2.0 和更多现在随附 Java 11.0.8 发货并将默认情况下使用它,在不推荐使用的库中会出现此错误。
解决方法很简单,需要在菜单File > Project Structure > JDK Location
[=12]中改成java(JDK)1.8 =]
注意到 Android 低于 4.2.0 的 Studio 已经带有 java 1.8
如果您使用的是 Ubuntu,那么只需在菜单文件 > 项目结构 > [=16= 中将 JDK 位置更改为 JAVA (JDK) 1.8 ] 地点
JDK location android studio 4.2
我以为是 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
有两种方法可以解决这个问题
- 回滚到 Java 8
- 更新 gradle 工具 'com.android.tools.build:gradle' 像 4.2.1(我用过)
也许你会遇到“Entry name 'AndroidManifest.xml' collided”的问题,在下面添加你的App build.gradle
android {
packagingOptions {
exclude 'AndroidManifest.xml'
}
}
通过执行以下步骤,我解决了这个问题,而无需将 JDK 替换为 JAVA 8.
第 1 步:将 gradle-wrapper.properties
中的 distributionUrl
更新为 https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
第 2 步:将您的 gradle 工具类路径更新为根 buid.gradle
中的 'com.android.tools.build:gradle:4.2.1'
如果你来这里有 Android Studio Arctic Fox,默认情况下 Java 11,你需要使用 java 1.8 找到必要的 类 已在 java 11 升级中完全删除。
在AndroidStudio Arctic Fox中设置的路径如下
首选项 > 构建执行部署 > Gradle > Gradle Sdk
选择下载 JDK,然后选择 Java 1.8.x 版本并重建项目。
Google 刚刚发布 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
我有同样的问题,我已经解决了。我发现 Android studio 4.2 会将 JDK 更新为 Java11,这会导致您描述的错误。
您可以删除 Java11 JDK 并替换为 Java8 (/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home).
您也可以卸载 Android Studio,然后重新安装。
Android Studio 4.2.0 和更多现在随附 Java 11.0.8 发货并将默认情况下使用它,在不推荐使用的库中会出现此错误。
解决方法很简单,需要在菜单File > Project Structure > JDK Location
[=12]中改成java(JDK)1.8 =]
注意到 Android 低于 4.2.0 的 Studio 已经带有 java 1.8
如果您使用的是 Ubuntu,那么只需在菜单文件 > 项目结构 > [=16= 中将 JDK 位置更改为 JAVA (JDK) 1.8 ] 地点
JDK location android studio 4.2
我以为是 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
有两种方法可以解决这个问题
- 回滚到 Java 8
- 更新 gradle 工具 'com.android.tools.build:gradle' 像 4.2.1(我用过) 也许你会遇到“Entry name 'AndroidManifest.xml' collided”的问题,在下面添加你的App build.gradle
android {
packagingOptions {
exclude 'AndroidManifest.xml'
}
}
通过执行以下步骤,我解决了这个问题,而无需将 JDK 替换为 JAVA 8.
第 1 步:将 gradle-wrapper.properties
distributionUrl
更新为 https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
第 2 步:将您的 gradle 工具类路径更新为根 buid.gradle
'com.android.tools.build:gradle:4.2.1'
如果你来这里有 Android Studio Arctic Fox,默认情况下 Java 11,你需要使用 java 1.8 找到必要的 类 已在 java 11 升级中完全删除。
在AndroidStudio Arctic Fox中设置的路径如下
首选项 > 构建执行部署 > Gradle > Gradle Sdk
选择下载 JDK,然后选择 Java 1.8.x 版本并重建项目。