2015-10-06 78 views
1

我正在使用job-dsl插件来自动创建jenkins作业。以下是我的maven配置。使用jdk8&groovy运行job-dsl-plugin 2.4.4- java.lang.IncompatibleClassChangeError

<java.version>1.8</java.version> 
<groovy.version>2.4.4</groovy.version> 
<dsl.version>1.37</dsl.version> 
<groovy.eclipse.compiler.version>2.9.101</groovy.eclipse.compiler.version> 
<groovy.eclipse.batch.version>2.3.7-01</groovy.eclipse.batch.version> 

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <compilerId>groovy-eclipse-compiler</compilerId> 
     <source>${java.version}</source> 
     <target>${java.version}</target> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-eclipse-compiler</artifactId> 
      <version>${groovy.eclipse.compiler.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-eclipse-batch</artifactId> 
      <version>${groovy.eclipse.batch.version}</version> 
     </dependency> 
    </dependencies> 
</plugin> 

我使用jdk8 & Groovy的所有2.4.4,Groovy的蚀编译&一个超级罐使用遮阳插件生成。为了运行我的脚本,我添加了额外的类路径(在进程job-dsl /高级设置下)作为target/my-uber.jar。

当我运行我的测试当地一切正常,但在詹金斯我收到以下错误

java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for com.salesforce.dva.pipeline.generator.model.PkgType do not match. Expected -1 but got 2 
at groovy.lang.MetaClassImpl.selectConstructorAndTransformArguments(MetaClassImpl.java:1413) 
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.selectConstructorAndTransformArguments(ScriptBytecodeAdapter.java:234) 

我试图改变常规版本(较旧)&设置JDK 7 & 6,但所有的人都产生了相同错误。

我该如何解决这个问题?

回答

2

Jenkins使用Groovy 1.8.x,所以Job DSL插件也使用Groovy 1.8.x.目前它是1.8.9。 Groovy 2.x的更新仍在进行中,请参阅JENKINS-21249。建议对任何Job DSL项目使用Groovy 1.8。

由于Groovy 2.3是第一个正式支持Java 8的版本(请参阅Release notes for Groovy 2.3),因此建议在任何Groovy 1.8项目中使用Java 7。

+0

感谢您的回复@daspilker。我尝试使用goorvy-1.8.9,java 1.7,groovy-eclipse-compiler 2.9.1-01,groovy-batch-compiler 2.3.1-01,但仍然得到了同样的错误“java.lang.IncompatibleClassChangeError:运行时的构造函数和com.salesforce.dva.pipeline.generator.model.PkgType的编译时间不匹配,预期为-1但得到2“ 我需要将groovy-eclipse-compiler版本更改为其他内容吗? – Nari

+0

当我使用groovy.eclipse.compiler.version -2.8.0-01&groovy.eclipse.batch.version 2.1.8-01时,我的问题得到了解决。 感谢您的帮助@daspilker。 – Nari