Jenkins问题:通过比较serialVersionUID,本地类不兼容

时间:2013-07-15 09:38:12

标签: java maven deployment jenkins continuous-integration

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

我在Jenkins有一个maven项目,首先检查来自subversion的代码,然后运行'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,local class serialVersionUID = 1”。预计不同serialVersionUID的冲突时应该是相同的。

我一直在jenkins jira和这里读过这个问题,但没有人真正解决这个问题。只有有人谈论降级jenkins的版本。

我想也许是pom.xml中指定的版本与jenkins服务器版本之间的java版本冲突,但都使用jdk 1.7。也许是一个jenkins bug呢?

有什么建议吗?

谢谢!

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

1 个答案:

答案 0 :(得分:2)

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

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