Привязка данных с Kotlin: ProcessDataBinding Невозможно получить открытый конструктор без аргументов - PullRequest
0 голосов
/ 07 октября 2018

Я получаю эту ошибку, когда набираю ./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.

Это также происходит, когда у меня kapt "androidx.databinding:databinding-compiler:$gradlePluginVersion" (для версий 3.2.0 и 3.3.0-alpha13)в build.gradle.У меня нет других зависимостей Kapt.У меня включено связывание данных, оно работает, и я могу запускать тесты через Android Studio (работает тестовая задача testDebugUnitTest).Я использую встроенный JDK.

1 Ответ

0 голосов
/ 28 ноября 2018

Я исправил эту проблему, используя Java 8 вместо Java 11. Та же проблема может появиться в Java 9 и 10. Я установил JAVA_HOME через export JAVA_HOME=/path/to/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.

...