当我在命令行中输入 ./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 constructor 和 java .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/