2013-07-15 20 views
2

我遇到了Jenkins 1.520的問題和關於序列化ID的奇怪異常。Jenkins問題:通過比較serialVersionUID不兼容本地類

我有一個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 

正如你所看到的,關鍵是「局部類不兼容:流classdesc的serialVersionUID = - 647770169695782116,本地類serialVersionUID = 1「。不同的serialVersionUID衝突預計會相同。

我一直在jenkins jira和這裏閱讀關於這個問題,但沒有人有這個真正的解決方案。只有有人談論降級jenkins版本。

我想也許它是在pom.xml中指定的版本和jenkins服務器版本之間的java版本衝突,但都使用jdk 1.7。也許詹金斯錯誤呢?

有什麼建議嗎?

謝謝!

解決方案:最終將版本從1.520降級到1.509.2(長期支持)適用於我們。

+0

你的Jenkins是獨立安裝還是你有一些奴隸? –

+0

安裝它的人告訴我,它是在Red Hat Linux中的一個獨立安裝(包括tomcat),使用命令「yum install Jenkins」 – Emilio

回答

2

嗯,這似乎是一個已知的問題:看https://issues.jenkins-ci.org/browse/JENKINS-18533

如果不需要詹金斯的最新版本,我建議切換到LTS (Long Term Support)版本詹金斯。當你沒有時間(或嫉妒)追蹤最新版本中的錯誤時,這些版本可確保生產服務器所需的穩定性。

+0

感謝Guillaume,幾個小時前我看到了這張票,我試圖找到和替代切換版本,但也許這是現在唯一的選擇..我會等一下,也許有人有一個技巧;) – Emilio