当前位置: 首页 > 知识库问答 >
问题:

java.io。InvalidClassException-Tomcat无法启动

公瑞
2023-03-14

当我尝试运行项目或启动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类中存在一些不兼容性。我搜索了此异常,并作为解决方案添加了

private static final long serialVersionUID = 5362381638722129852L; 

到金属群岛,但仍然没有好处。Tomcat没有启动。关于这个问题,有人有什么推荐吗?提前感谢。

编辑:我安装了另一个Tomcat版本,但仍然不好。我删除了Tomcat工作下的文件

编辑

共有2个答案

施永宁
2023-03-14

似乎Tomcat在您的已编译类的前一个版本被关闭时保留了它。后来您部署了应用程序的重新编译的更新版本。当Tomcat想要恢复持久化的会话时,它无法做到,因为他从seralVersionUID中注意到类已更改。如果旧的持久化会话中没有重要数据,我建议通过删除SESSIONS.ser文件来简单地删除它。我认为它可能在work目录中。

林夕
2023-03-14

我认为 com.turktrust.iab.ebs.backingbeans.MetalCikisIslemleriBean 已经被 SVN 中的其他人更改了,所以你得到了一个 java.io.InvalidClassException

问题是,您在任何本地存储上都存储了带有该类的旧版本的数据(您的会话?),现在您正在尝试使用新版本加载它。根据类的变化,这是不可能的。

最简单的解决方案是从本地存储(可能是工作目录)中删除会话数据 - 但要小心,因为您将丢失存储在用户会话中的所有信息。

更新

尝试从临时和工作目录中删除所有文件,当 tomcat 关闭时

 类似资料:
  • 在配置实例时,我使用“Remote-exec”执行一些命令,然后通过terraform启动一个tomcat实例。它看起来像这样: } 输出显示tomcat已启动,但当我查看实例时,日志显示它尚未启动(没有日志记录)。我可以用ssh连接到实例中并运行“/catalina.sh start”,效果很好。我还尝试创建一个服务,并在远程执行内联命令中运行“sudo service tomee start”

  • 2)我使用的是自定义的,但现在我使用的是原来的: 3)Tomcat正确启动,我看到我的计算机中打开了端口8080。实际上,我必须手动关闭进程才能再次尝试从Netbeans运行新的程序,否则它会抱怨端口已经打开。与此同时,Netbeans只是等待,等待……在“等待Tomcat”之后的某个时候,它只是说它失败了,就像它不能识别Tomcat打开了一样。Tomcat保持运行,就像没有人与它通信一样。所以没

  • web应用程序在这里有一个jar[/Users/joey/local/apache-tomcat-8.0.23/webapps/webgoat/web-INF/lib/webgoat-classloader-6.1.0.jar],其中包括一个类[public class PluginClassLoader extensed WebappClassLoader]。我认为这是类加载器的配置问题,但请帮

  • 使用maven启动tomcat时,出现以下错误 java.util.concurrent.executionException:org.apache.Catalina.LifecyCleException:在java.util.concurrent.futureTask.report(未知源)在java.util.concurrent.futureTask.get(未知源)启动组件[standar

  • 我已经在tomcat服务器上安装了应用程序。在启动和加载应用程序的过程中,我有以下堆栈跟踪的错误。如何解决这个问题? apache-tomcat-7.0.47/webapps/petclinic 2016年10月27日下午12:14:36 org。阿帕奇。卡塔琳娜。果心标准上下文起始内部 严重:ServletContainerInitializer处理javax时出错。servlet。Servle

  • 我有一个webapp引用了另一个本地项目,由于某种原因,当我试图通过eclipse将这个web app部署到tomcat时,tomcat无法启动。在堆栈中,我看到没有找到来自本地项目的类。虽然我不太确定如何解决这个问题。我试图通过“服务器”的“项目引用”引用这个项目和所有相关项目,但这似乎不起作用。以前有没有人处理过这个问题,或者有没有关于如何解决这个问题的建议。我在下面附上了我漂亮的堆栈痕迹。事