java - Jenkins 问题 : local class incompatible by comparing serialVersionUID

标签 java maven deployment jenkins continuous-integration

我遇到了 Jenkins 1.520 的问题和一个关于序列化 ID 的奇怪异常。

我在 Jenkins 中有一个 Maven 项目,它首先从颠覆中 check out 代码,然后运行“mvn clean install”,最后将生成的 war 部署到另一个预生产服务器。

我第一次运行这个项目一切正常,但在第一次执行后我遇到了这个异常:

ERROR: Failed to parse POMs
java.io.InvalidClassException: hudson.maven.PlexusModuleContributor$1; local class incompatible: stream classdesc serialVersionUID = -647770169695782116, local class serialVersionUID = 1
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:604)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at hudson.remoting.UserRequest.deserialize(UserRequest.java:182)
at hudson.remoting.UserRequest.perform(UserRequest.java:98)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Finished: FAILURE

如您所见,重点是“本地类不兼容:stream classdesc serialVersionUID = -647770169695782116,本地类serialVersionUID = 1”。预期相同时不同 serialVersionUID 的冲突。

我一直在 jenkins jira 和此处阅读有关此问题的信息,但没有人对此有真正的解决方案。只有有人在谈论降级 jenkins 的版本。

我想可能是pom.xml中指定的版本和jenkins server的版本之间的java版本冲突,但都使用jdk 1.7。那么可能是 Jenkins 错误?

有什么建议吗?

谢谢!

解决方案:最终将版本从 1.520 降级到 1.509.2(长期支持)对我们有效。

最佳答案

好吧,这似乎是一个已知问题:请参阅 https://issues.jenkins-ci.org/browse/JENKINS-18533

如果不需要最新版本的 Jenkins,我建议切换到 LTS (Long Term Support) Jenkins 的版本。当您没有时间(或羡慕)跟踪最新版本中的错误时,这些版本可确保生产服务器所需的稳定性。

关于java - Jenkins 问题 : local class incompatible by comparing serialVersionUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17651077/

相关文章:

java - JSP过滤非法url直接访问

java - TestExecutionListener 的顺序

java - 如何在不改变android中的值的情况下按字母顺序对 HashMap 键进行排序?

java - Maven 依赖、Tomcat7 和部署

java - 如何在jboss web server3.0.0 beta-1上部署jbpm-console 3.3.1

django - 当Debug设置为False时,为什么Django会为静态媒体生成HTTP 500错误?

java - If/Else 逻辑流程

maven - 父 POM 版本号小于子 POM 版本号是否有任何影响?

java - Windows下Maven安装 : "JAVA_HOME is set to an invalid directory"

c++ - 如何部署将在特定时间或使用次数后过期的 .NET 应用程序