NoClassDefFind ShortTypeHandling使用gradle自定义插件 我编写了一些groovy代码,使用compilelocalgroovy()进行编译,并将jar发布到artifactory 现在我编写了一个gradle插件,其中我有编译localGroovy()和编译“上面的jar gav” 我构建插件并发布到同一个工件

NoClassDefFind ShortTypeHandling使用gradle自定义插件 我编写了一些groovy代码,使用compilelocalgroovy()进行编译,并将jar发布到artifactory 现在我编写了一个gradle插件,其中我有编译localGroovy()和编译“上面的jar gav” 我构建插件并发布到同一个工件,groovy,gradle,Groovy,Gradle,现在,, 要使用上述自定义插件,我需要 buildscript { dependencies { classpath localGroovy() classpath "gav of plugin", transitive: true } } 如您所见,我在任何地方都使用相同的localGroovy()。我的gradle版本也一样。现在,通过以上步骤,我得到以下错误: Caused by: java.lang.NoClassDefFoundErro

现在,, 要使用上述自定义插件,我需要

buildscript {
    dependencies {
        classpath localGroovy()
        classpath "gav of plugin", transitive: true
    }
}
如您所见,我在任何地方都使用相同的localGroovy()。我的gradle版本也一样。现在,通过以上步骤,我得到以下错误:

Caused by: java.lang.NoClassDefFoundError: org/codehaus/groovy/runtime/typehandling/ShortTypeHandling
    at com.oracle.emdi.tools.lrgmanager.LrgManager.<clinit>(LrgManager.groovy:44)
    at com.oracle.emdi.gradle.testinfra.tasks.PrintLrg.class$(PrintLrg.groovy)
    at com.oracle.emdi.gradle.testinfra.tasks.PrintLrg.$get$$class$com$oracle$emdi$tools$lrgmanager$LrgManager(PrintLrg.groovy)
    at com.oracle.emdi.gradle.testinfra.tasks.PrintLrg.print(PrintLrg.groovy:38)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:219)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:212)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:201)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:533)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:516)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
原因:java.lang.NoClassDefFoundError:org/codehaus/groovy/runtime/typehandling/ShortTypeHandling
位于com.oracle.emdi.tools.lrgmanager.lrgmanager.(lrgmanager.groovy:44)
位于com.oracle.emdi.gradle.testinfra.tasks.PrintLrg.class$(PrintLrg.groovy)
在com.oracle.emdi.gradle.testinfra.tasks.PrintLrg.$get$$class$com$oracle$emdi$tools$lrgmanager$lrgmanager(PrintLrg.groovy)
位于com.oracle.emdi.gradle.testinfra.tasks.PrintLrg.print(PrintLrg.groovy:38)
位于org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
位于org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:219)
位于org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:212)
位于org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:201)
位于org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:533)
位于org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:516)
位于org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
位于org.gradle.api.internal.tasks.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)

正如我在中所读到的,这个问题与groovy/gradle版本不匹配有关。但这里的情况并非如此

Groovy版本不匹配是唯一好的解释
LrgManager
很可能是用不同于Gradle版本的主要Groovy版本编译的。看起来消费Gradle构建使用Gradle 1.x。在使用插件的构建中不需要
classpath localGroovy()
(可能这甚至导致了问题)。你是对的。我使用的是较旧的gav(在那里我使用groovy 2.x进行编译)。修正了这一点,它的工作。谢谢@PeterNiederwieser