Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoClassDefFoundError:由于缺少依赖项javax/xml/bind/Unmarshaller,无法加载groovy.xml.jaxb.JaxbGroovyMethods类_Java_Gradle_Groovy_Java 9_Java 11 - Fatal编程技术网

NoClassDefFoundError:由于缺少依赖项javax/xml/bind/Unmarshaller,无法加载groovy.xml.jaxb.JaxbGroovyMethods类

NoClassDefFoundError:由于缺少依赖项javax/xml/bind/Unmarshaller,无法加载groovy.xml.jaxb.JaxbGroovyMethods类,java,gradle,groovy,java-9,java-11,Java,Gradle,Groovy,Java 9,Java 11,我们的Gradle构建有——在JavaCompile中添加modules=java.xml.bind、java.activation、java.xml.ws.annotation到options.compilerArgs以使用JDK9/10构建。现在这很好用,但是这些模块已经被弃用了 我想为JDK11做准备 我已经尝试将javax.xml.bind:jaxb-api:2.3.0,com.sun.xml.bind:jaxb-impl:2.3.0和com.sun.xml.bind:jaxb-core

我们的Gradle构建有
——在
JavaCompile
中添加modules=java.xml.bind、java.activation、java.xml.ws.annotation
options.compilerArgs
以使用JDK9/10构建。现在这很好用,但是这些模块已经被弃用了

我想为JDK11做准备

我已经尝试将
javax.xml.bind:jaxb-api:2.3.0
com.sun.xml.bind:jaxb-impl:2.3.0
com.sun.xml.bind:jaxb-core:2.3.0
添加到
编译
运行时
以及
buildscript
中的
类路径
,但我仍然得到
nocsdeffounderror

我错过了什么

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':my-client:compileGroovy'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:103)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
        at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:66)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
        at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:596)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.NoClassDefFoundError: Unable to load class groovy.xml.jaxb.JaxbGroovyMethods due to missing dependency javax/xml/bind/Unmarshaller
        at org.gradle.api.internal.tasks.compile.ApiGroovyCompiler.execute(ApiGroovyCompiler.java:175)
        at org.gradle.api.internal.tasks.compile.ApiGroovyCompiler.execute(ApiGroovyCompiler.java:56)
        at org.gradle.api.internal.tasks.compile.GroovyCompilerFactory$DaemonSideCompiler.execute(GroovyCompilerFactory.java:74)
        at org.gradle.api.internal.tasks.compile.GroovyCompilerFactory$DaemonSideCompiler.execute(GroovyCompilerFactory.java:62)
        at org.gradle.api.internal.tasks.compile.daemon.AbstractDaemonCompiler$CompilerCallable.call(AbstractDaemonCompiler.java:88)
        at org.gradle.api.internal.tasks.compile.daemon.AbstractDaemonCompiler$CompilerCallable.call(AbstractDaemonCompiler.java:76)
        at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:42)
        at org.gradle.workers.internal.WorkerDaemonServer.execute(WorkerDaemonServer.java:46)
        at org.gradle.workers.internal.WorkerDaemonServer.execute(WorkerDaemonServer.java:30)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:101)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
        at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
        at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
        ... 3 more

报告的缺失类对于每个构建不是100%相同:它在抱怨
javax/xml/bind/JAXBContext
javax/xml/bind/Unmarshaller
javax/xml/bind/Marshaller
构建中的这一行之间切换。gradle
依赖关系解决了我的这个确切问题:

    compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'

好的,这就解决了,可能是由于新的Groovy(2.5.1)和Gradle(4.7)依赖项。

我无法告诉您如何正确解决问题,但我可以提出一个解决方法:将您的
JDK_JAVAC_OPTIONS
环境变量设置为
--addmodules java.xml.bind
@ZhekaKozlov
--add modules java.xml.bind
JDK/11不需要,对吗?还有,你查过了吗?很高兴看到您使用的
build.gradle
依赖项。@neu242我对gradle几乎一无所知,所以这些都是猜测。。。我最多可以想到三个可能需要这些依赖关系的活动部分:(a)Gradle进程本身,(b)为编译启动的进程,(c)正在编译的源代码。我猜(b)是这样的-你确定你已经把这些罐子加到(b)了吗?我会使用完整的调试输出运行Gradle,并希望找出这些JAR的确切显示位置。@neu242您使用完整的调试输出运行了吗?如果您使用Maven实现了这一点,它将向您显示用于每个进程的确切类路径。这至少可以回答这个问题,JAR是否最终位于正确的位置。对于那些有足够分数并且喜欢使用groovy的人,请投票支持重新开始这个问题。这是一个非常特殊的错误,在2.5.1/2.5.2中修复了它。但对我来说不是:(我想知道我的设置有什么问题……groovy版本是什么?2.5.2?在撰写本文时,我使用的是groovy 2.5.0和Gradle 4.7。当问题解决时,我使用的是groovy 2.5.1和Gradle 4.10。这是正确的。创建2.5.1是为了解决您提到的问题。