20

谷歌刚刚发布了 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
4

7 回答 7

47

Android Studio 4.2.0及更高版本现在随附 Java 11.0.8,默认情况下将使用它,这会在已弃用的库中出现此错误。

解决方法很简单,需要在菜单里改成java(JDK) 1.8File > Project Structure > JDK Location

图片

注意到低于 4.2.0 的 Android Studio 已经带有 java 1.8

于 2021-05-07T23:59:38.400 回答
12

通过执行以下步骤,我解决了这个问题,而没有用 JAVA 8 替换 JDK。

第1 步:更新distributionUrlhttps\://services.gradle.org/distributions/gradle-6.8.3-bin.zipgradle-wrapper.properties

第 2 步:将您的 gradle 工具类路径更新到'com.android.tools.build:gradle:4.2.1'您的根目录buid.gradle

于 2021-06-22T09:32:07.560 回答
7

我有同样的问题,我已经解决了。我发现 Android studio 4.2 会使 JDK 更新到 Java11,它会导致你描述的错误。

您可以删除 Java11 JDK 并替换为 Java8 (/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home)。

您也可以卸载 Android Studio,然后重新安装。

于 2021-05-06T03:58:19.590 回答
6

如果您使用的是 Ubuntu,那么只需在菜单 File > Project Structure > JDK Location 中将 JDK 位置更改为 JAVA (JDK) 1.8

JDK位置android studio 4.2

于 2021-05-12T08:41:33.927 回答
4

我以为是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
于 2021-05-25T03:01:08.317 回答
2

如果您来这里使用 Java 11 默认附带的Android Studio Arctic Fox ,您需要使用 java 1.8 来查找在 java 11 升级中完全删除的必要类。

Android Studio北极狐中设置的路径如下

首选项 > 构建执行部署 > Gradle > Gradle Sdk

选择下载 JDK,然后选择 Java 1.8.x 版本并重建项目。

于 2021-10-01T05:23:30.040 回答
0

有两种方法可以解决这个问题

  1. 回滚到 Java 8
  2. 更新 gradle tools 'com.android.tools.build:gradle' like 4.2.1(I used) 也许你会遇到“Entry name 'AndroidManifest.xml' collided”的问题,添加下面的 App build.gradle
android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }
}
于 2021-06-16T07:38:36.257 回答