草庐IT

android - 与 Kotlin : ProcessDataBinding Unable to get public no-arg constructor 的数据绑定(bind)

coder 2023-05-09 原文

当我在命令行中输入 ./gradlew test 时出现此错误:

e: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: android.databinding.annotationprocessor.ProcessDataBinding Unable to get public no-arg constructor
        at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:581)
        at ...
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
        ... 59 more


> Task :app:kaptDebugKotlin FAILED

FAILURE: Build failed with an exception.

当我在 build.gradle 中有 kapt "androidx.databinding:databinding-compiler:$gradlePluginVersion" (适用于 3.2.0 和 3.3.0-alpha13 版本)时也会发生这种情况。我没有其他 kapt 依赖项。我启用了数据绑定(bind),它可以工作,我可以通过 Android Studio 运行测试(gradle 任务 testDebugUnitTest 工作)。我使用嵌入式 JDK。

最佳答案

我通过使用 Java 8 而不是 Java 11 解决了这个问题。Java 9 和 10 可能会出现同样的问题。我通过 export JAVA_HOME=/path/to/设置了我的 JAVA_HOME java/8 然后运行 ​​./gradlew build。瞧,没有错误。

我有异常 e: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: android.databinding.annotationprocessor.ProcessDataBinding Unable to get public no-arg constructorjava .lang.NoClassDefFoundError: javax/xml/bind/JAXBException 当我使用 gradle 从命令行运行构建时。但是当我从 Android Studio 运行构建时,这些并没有出现。我怀疑这是因为 Android Studio 在某种程度上使用了自己的 Java 版本。

关于android - 与 Kotlin : ProcessDataBinding Unable to get public no-arg constructor 的数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52689100/

有关android - 与 Kotlin : ProcessDataBinding Unable to get public no-arg constructor 的数据绑定(bind)的更多相关文章

随机推荐