2012-04-05 100 views
4

當我試圖運行項目或啓動Tomcat我不斷收到此錯誤:java.io.InvalidClassException - Tomcat的啓動失敗

SEVERE: Exception loading sessions from persistent storage 
java.io.InvalidClassException: com.turktrust.iab.ebs.backingbeans.MetalCikisIslemleriBean; local class incompatible: stream classdesc serialVersionUID = 5362381638722129852, local class serialVersionUID = -3788780881701361526 
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562) 
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582) 
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
    at java.util.HashMap.readObject(HashMap.java:1030) 
    at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1666) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1322) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
    at java.util.HashMap.readObject(HashMap.java:1030) 
    at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1666) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1322) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
    at java.util.HashMap.readObject(HashMap.java:1030) 
    at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
    at java.util.HashMap.readObject(HashMap.java:1030) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350) 
    at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1509) 
    at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:998) 
    at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:394) 
    at org.apache.catalina.session.StandardManager.load(StandardManager.java:321) 
    at org.apache.catalina.session.StandardManager.start(StandardManager.java:648) 
    at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:446) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4631) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675) 
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

出現此問題後,我接到了SVN的更新。它看起來像有在MetalCikisIslemleriBean class.I一些不兼容搜索這個異常,並作爲一個解決方案,我加入

private static final long serialVersionUID = 5362381638722129852L; 

到MetalCikisIslemleriBean但仍沒有好處。 Tomcat沒有啓動。有沒有人有任何關於這個問題的建議?提前致謝。

編輯: 我安裝了另一個Tomcat版本,但仍然不好。我刪除了Tomcat的工作&臨時目錄和項目的生成文件夾下的文件。這次Tomcat運行,清理&建設項目很好,但它仍然沒有運行。我意識到的是,在該項目的backingbeans文件夾下有MetalCikisIslemleriBean的2類文件:MetalCikisIslemleriBean $ 1 MetalCikisIslemleriBean ..

編輯& SOLUTION: Tomcat的是緩存項目的WAR文件。當我從Tomcat的緩存中刪除了這場戰爭時(在Netbeans:服務面板 - 服務器 - Tomcat - Web應用程序中),問題已解決。謝謝大家。

回答

2

我認爲com.turktrust.iab.ebs.backingbeans.MetalCikisIslemleriBean已被SVN中的其他人更改,因此您得到java.io.InvalidClassException

的問題是,你有存儲數據(您的會話?)對任何本地存儲的版本類的,現在你正在試圖與版本加載它。根據你班級的變化,這是不可能的。

最簡單解決方案是從本地存儲(可能是工作目錄)中刪除會話數據 - 但要小心,因爲您將失去存儲在用戶會話中的所有信息。

UPDATE

嘗試刪除臨時和工作目錄中的所有文件當Tomcat下

+0

我做了,但仍然不好.. – lamostreta 2012-04-05 09:04:17

+0

請檢查您的應用程序是否使用任何其他文件夾來存儲會話數據。 – powerMicha 2012-04-05 09:15:27

+0

請看看這個問題http://stackoverflow.com/questions/8640859/error-local-class-incompatible-stream-classdec-serialversionuid-local-c – powerMicha 2012-04-05 09:17:33

0

看來,Tomcat的堅持已編譯的類的以前的版本,當它被關閉一段時間。之後,您部署了重新編譯的應用程序更新版本。當Tomcat想要恢復持續會話時,它不能這樣做,因爲他從serialVersionUID注意到該類已更改。如果在舊的持續會話中沒有重要數據,我建議通過刪除SESSIONS.ser文件來簡單地刪除它。我認爲它可能在work目錄中。

+0

感謝您的答案。但是Tomcat目錄下沒有SESSIONS.ser,也沒有任何文件夾。 – lamostreta 2012-04-05 07:46:28

+0

您使用的是哪個版本的Tomcat?那麼tldCache.ser呢? – jabal 2012-04-05 08:04:04

+0

我正在使用6.0。沒有tldCache.ser。 – lamostreta 2012-04-05 09:04:41