javalangClassFormatError:无效的常量池条目类型18

时间:2015-07-02 16:09:56

标签: apache ant jenkins

我刚刚将我的代码的新版本编入我的git存储库并将其推送到服务器。 jenkins开始按预期构建我的测试,但突然失败了以下堆栈跟踪:

java.lang.ClassFormatError: Invalid Constant Pool entry Type 18
    at org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPoolEntry.readEntry(ConstantPoolEntry.java:159)
    at org.apache.tools.ant.taskdefs.optional.depend.constantpool.ConstantPool.read(ConstantPool.java:67)
    at org.apache.tools.ant.taskdefs.optional.depend.ClassFile.read(ClassFile.java:72)
    at org.apache.tools.ant.taskdefs.optional.depend.AntAnalyzer.determineDependencies(AntAnalyzer.java:92)
    at org.apache.tools.ant.util.depend.AbstractAnalyzer.getClassDependencies(AbstractAnalyzer.java:100)
    at org.apache.tools.ant.taskdefs.optional.depend.Depend.determineDependencies(Depend.java:346)
    at org.apache.tools.ant.taskdefs.optional.depend.Depend.execute(Depend.java:718)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:442)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:302)
    at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:221)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:390)
    at org.apache.tools.ant.Target.performTasks(Target.java:411)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
    at org.apache.tools.ant.Main.runBuild(Main.java:809)
    at org.apache.tools.ant.Main.startAnt(Main.java:217)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

(见解决方案的答案)

格尔茨, 尼科

1 个答案:

答案 0 :(得分:4)

经过一天跟踪不同的痕迹后,我找到了一个解决方案,如果有人遇到同样的麻烦,我只想在这里发帖。

  • 我使用的ant版本(1.8.2。)太旧了,无法处理CONSTANT_INVOKEDYNAMIC(无效的常量池条目类型18),在我的理解中,这意味着ant发现了一些无法处理的java 8 lamda代码
    • 我已经在某个提交之前使用了lambdas!那为什么现在就抱怨呢?
    • googleing引导我查看ant 1.8.2中的一个错误,该错误产生了这个错误。我怀疑是因为我没有在服务器上降级我的蚂蚁安装,10分钟前构建进行得很好 - 用1.8.2!

所以我开始务实地解决问题:

  • 下载了ant 1.9.5,在某处解开了

  • 重命名了旧的ant命令(/ usr / bin / ant => /usr/bin/ant-1.8.2)

  • 将新蚂蚁链接到/ usr / bin / ant

然后一切正常!

在这次奥德赛之后,有没有人知道为什么这个错误没有出现在之前?