viv*_*ino 5 java android gradle
我正在尝试更新到 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
Run Code Online (Sandbox Code Playgroud)
我一直在寻找一些解决方案,我发现我必须在 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'
Run Code Online (Sandbox Code Playgroud)
但我仍然遇到同样的错误:
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)
...
Run Code Online (Sandbox Code Playgroud)
完整的app/build.gradle:https://gist.github.com/vivoconunxino/a68d2011bc1b184a83786a6268533087
完整错误:https://gist.github.com/vivoconunxino/1a27586133b34adbbe8314395e6704a1
cod*_*eDr 11
我也发现了这个问题。
我将以下内容添加到我的 gradle 依赖项中:
dependencies {
[...]
implementation 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.3'
implementation 'org.glassfish.jaxb:jaxb-runtime:2.3.3'
annotationProcessor 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.3'
annotationProcessor 'org.glassfish.jaxb:jaxb-runtime:2.3.3'
annotationProcessor 'javax.annotation:javax.annotation-api:1.3.2'
}
Run Code Online (Sandbox Code Playgroud)
小智 2
注意:我只是想发表评论,但没有足够的声誉来发表评论。
我今天刚刚遇到这个问题,当时尝试在 macOS 10.15.3 (Catalina) 上使用 Gradle 6.1.1(也在 5.4.1 上尝试过)并使用 JDK 11 构建 Android 应用程序。
我通过将 JDK 降级到 JDK8 解决了这个问题,因为根据此(How toresolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9),显然 JAXB 在 JDK 11 中已被删除。
我觉得这是一个与 Gradle 插件(可能是 com.android.application 或 kotlin 插件)相关的问题,因为我使用 JDK11 通过 Gradle 构建了 JNI。
| 归档时间: |
|
| 查看次数: |
11901 次 |
| 最近记录: |