首页 > 解决方案 > 使用 gradle 构建 javax/xml/bind/JAXBException

问题描述

我正在尝试更新到 gradle 5.4 和 JDK 11,但是在构建时出现错误:

 Task :app:compileDesarrolloDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDesarrolloDebugJavaWithJavac'.
> javax/xml/bind/JAXBException

我一直在寻找一些解决方案,我发现我必须在我的 app/build.gradle 上添加一些依赖项,因为 Java 9+ 不再安装 jre:

compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
compile group: 'com.sun.xml.bind', name: 'jaxb-core', version: '2.3.0'
compile group: 'com.sun.xml.bind', name: 'jaxb-impl', version: '2.3.0'
compile group: 'javax.activation', name: 'activation', version: '1.1.1'
compile group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.1'

但我仍然遇到同样的错误:

javax/xml/bind/JAXBException
> javax.xml.bind.JAXBException

org.gradle.api.tasks.TaskExecutionException
: 
Execution failed for task ':app:compileDesarrolloDebugJavaWithJavac'.
Open stacktrace
Caused by: 
java.lang.NoClassDefFoundError
: 
javax/xml/bind/JAXBException
Open stacktrace
Caused by: 
java.lang.ClassNotFoundException
: 
javax.xml.bind.JAXBException
Close stacktrace
at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.instantiateProcessor(AnnotationProcessingCompileTask.java:149)
at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.setupProcessors(AnnotationProcessingCompileTask.java:108)
at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:91)
at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:50)
at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:36)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.delegateAndHandleErrors(NormalizingJavaCompiler.java:100)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:52)
at org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler.execute(NormalizingJavaCompiler.java:38)
at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:51)
at org.gradle.api.internal.tasks.compile.AnnotationProcessorDiscoveringCompiler.execute(AnnotationProcessorDiscoveringCompiler.java:37)
...

完整的应用程序/build.gradle:https://gist.github.com/vivoconunxino/a68d2011bc1b184a83786a6268533087

完全错误:https ://gist.github.com/vivoconunxino/1a27586133b34adbbe8314395e6704a1

标签: javaandroidgradle

解决方案


注意:我只是想发表评论,但没有足够的声誉发表评论。

我今天刚遇到这个问题,尝试使用 Gradle 6.1.1(也在 5.4.1 上尝试过)构建 Android 应用程序,并在 macOS 10.15.3(Catalina)上使用 JDK 11。

我通过将我的 JDK 降级到 JDK8 解决了这个问题,因为根据这个(How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9),显然 JAXB 在 JDK 11 中被删除了。

我觉得这是一个与 Gradle 插件(可能是 com.android.application 或 kotlin 插件)相关的问题,因为我通过 Gradle 使用 JDK11 构建了 JNI。


推荐阅读