tomcat - java.lang.ClassCastException : java. io.ObjectStreamClass 无法转换为 java.lang.String

标签 tomcat exception

我在 tomcat 上运行 Web 应用程序时出现以下堆栈跟踪错误,无法找到此异常的根本原因。

Eclipse 32 bit Luna Release (4.4.0)
Tomcat 32 bit 8.0.30
jdk1.8.0_66
    Jan 01, 2016 10:02:16 AM org.apache.catalina.session.StandardManager startInternal
SEVERE: Exception loading sessions from persistent storage
java.lang.ClassCastException: java.io.ObjectStreamClass cannot be cast to java.lang.String
    at java.io.ObjectInputStream.readTypeString(ObjectInputStream.java:1419)
    at java.io.ObjectStreamClass.readNonProxy(ObjectStreamClass.java:719)
    at java.io.ObjectInputStream.readClassDescriptor(ObjectInputStream.java:831)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1602)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
    at org.apache.catalina.session.StandardSession.doReadObject(StandardSession.java:1627)
    at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1090)
    at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:261)
    at org.apache.catalina.session.StandardManager.load(StandardManager.java:180)
    at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:460)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5272)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Jan 01, 2016 10:02:16 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'bgx'

最佳答案

我似乎遇到了同样的问题,但这不是 Tomcat 中的错误。这是由于属于应用程序的对象存储在不可序列化的 HTTP session 中,因此 Tomcat 在持久 session 时无法序列化。

我建议看一下 Tomcat 持久 session 存储文件的内容:SESSIONS.ser,它位于相应 Web 应用程序的 Tomcat“工作”目录中。

在文本编辑器中打开这个二进制文件(当 Tomcat 关闭时!),字符串 java.io.NotSerializableException 的存在将识别序列化问题,文件中的下落应该提供关于哪个对象/字段的线索Tomcat 在保留 session 时无法序列化。

关于tomcat - java.lang.ClassCastException : java. io.ObjectStreamClass 无法转换为 java.lang.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34553583/

相关文章:

java - Tomcat 内存泄漏

linux - 是否可以仅针对某些特定的 C++11 代码段 {activate|de-activate} SIGFPE 生成?

c++ - 为什么不加条件 no except 呢?

java - 最小化 Tomcat "per connection"内存占用

java - Tomcat 8.0.51 - 由于未知原因额外启动 20 秒

eclipse - 在 xhtml 页面中显示 jsf 组件

tomcat - Memcached 和 Tomcat 8 不兼容

java - 运行非常简单的 Hello World JNI 测试时遇到问题

python - 如何使用 assertRaises() 对 python 类的 __init__() 方法进行单元测试?

exception - Haskell - 检查文件句柄的有效性