2010-07-27 19:12:55,004 ERROR [com.danga.MemCached.MemCachedClient] - <实体类(pojo); local class incompatible: stream classdesc serialVersionUID = 812952289507407815, local class serialVersionUID = -7688346538714640295>
java.io.InvalidClassException: 实体类(pojo); local class incompatible: stream classdesc serialVersionUID = 812952289507407815, local class serialVersionUID = -7688346538714640295
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:546)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1552)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at java.util.HashMap.readObject(HashMap.java:2365)
at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:1364)
at com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:1209)
at com.laoer.session.SessionService.getSession(SessionService.java:88)
at com.laoer.session.HttpSessionSidWrapper.<init>(HttpSessionSidWrapper.java:22)
at com.laoer.session.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:22)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:236)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:245)
原因是在resin部署了两个项目,两个项目中,都有user表的实体类,然后两个项目的序列号不一致,估计是同在一个jvm中,导致反序列化出问题,回来把序列号都改为一致的就没问题啦!
第一次碰到这样的情况,如果一个一个项目的部署,我想这问题不会出现!值得保留!
分享到:
相关推荐
为了避免序列化过程中出现`java.io.InvalidClassException`异常,特别是处理序列化对象版本兼容性问题时,强烈推荐在所有可序列化的类中显式声明`serialVersionUID`。这不仅可以提高程序的稳定性和健壮性,还能简化...
29448643 JAVA.IO.INVALIDCLASSEXCEPTION: FILTER STATUS: REJECTED 29671623 CVE-2019-2725 26403575 CVE-2016-7103 29667975 CVE-2019-2824 29726561 CVE-2019-2729 29701537 CVE-2019-2827 1.2 Oracle WebLogic ...
1. `java.io.ObjectOutputStream`和`java.io.ObjectInputStream`:基础的序列化和反序列化工具类。 2. `java.io.Serializable`: 标记接口,表明对象支持序列化。 3. `java.io.NotSerializableException`: 当尝试序列...
当一个类实现`java.io.Serializable`接口时,它的实例就可以被序列化。系统会默认生成一个唯一的`serialVersionUID`,用于验证序列化和反序列化的类版本是否一致。如果在序列化后修改了类的结构(如添加、删除或修改...
如果类的版本更新导致结构变化,而此值未做更新,反序列化时会抛出`InvalidClassException`。因此,为了保证兼容性,有时需要显式声明`serialVersionUID`。 2. **序列化的作用**: - 持久化数据:将对象状态保存到...
在Java中,如果一个类需要支持序列化,那么这个类需要实现`java.io.Serializable`接口。实现该接口后,Java虚拟机(JVM)会根据类的信息生成一个序列化ID,即`serialVersionUID`,用于表示类的版本标识。如果序列化ID...
在Java中,如果一个类需要支持序列化,它应该实现`java.io.Serializable`接口。 在Java序列化过程中,`serialVersionUID`扮演着至关重要的角色。`serialVersionUID`是一个长期不变的标识符,用于验证序列化版本的...
- **序列化API**:主要使用`java.io.ObjectOutputStream`类的`writeObject()`方法将对象写入输出流,`java.io.ObjectInputStream`类的`readObject()`方法从输入流读取对象。 2. **反序列化(Deserialization)**: ...
为了将可序列化的对象序列化到文件或其他存储介质中,需要使用 `java.io.ObjectOutputStream` 和 `java.io.ObjectInputStream` 类。以下是一个简单的序列化示例: ```java import java.io.*; public class ...
在Java中,实现对象序列化主要依靠实现`java.io.Serializable`接口。本文将深入探讨Java对象序列化的原理、用途和注意事项。 **一、序列化原理** 1. **实现Serializable接口**: 对象要能够被序列化,它所在的类...
Java的序列化与反序列化是Java开发中的一项重要技术,它允许我们将对象的状态转换为字节流,以便存储或在网络上传输。`Serializable`接口是Java提供的一个标记接口,用于实现对象的序列化。当一个类实现了这个接口,...
通过实现`java.io.Serializable`接口,一个类的实例就能被序列化。 2. **默认序列化过程** 默认情况下,序列化会保存对象的所有实例变量,但不包括静态变量。这是因为静态变量属于类,而非特定的对象实例。序列化...
在Java中,要实现对象的序列化,对象所属的类必须实现java.io.Serializable接口。这个接口虽然没有任何方法,但它是对象可以被序列化的标志。实现Serializable接口的对象可以被写入到输出流,并且可以从输入流中被...
在Java中,它通过实现`java.io.Serializable`接口来标记一个类为可序列化的。序列化的主要目的是保存对象的状态,以便在后续阶段恢复或在不同环境间传递。 2. **如何实现序列化**: 一个类只需声明实现`...
`java.io.ObjectStreamClass`类提供了关于正在序列化或反序列化的类的信息,包括类的`serialVersionUID`、是否为`Serializable`以及类的字段描述。 9. **序列化流的性能优化**: 序列化和反序列化可能会消耗大量...
在Java中,如果一个类需要支持序列化,那么这个类就需要实现`java.io.Serializable`接口。这是一个标记接口,没有包含任何方法,它仅仅表示该类的对象可以被序列化。当一个对象实例化后,如果其类实现了`...
在Java中,要实现序列化,一个类必须实现`java.io.Serializable`接口。这是一个标记接口,没有包含任何方法,它的作用仅仅是告诉JVM该类的对象可以被序列化。例如,我们有一个名为`Child`的类,它可能如下所示: ``...
在Java中,对象序列化是通过实现`java.io.Serializable`接口来实现的。 **Serializable接口**: `Serializable`接口是一个标记接口,它没有定义任何方法。当一个类实现了这个接口,就意味着该类的对象可以被序列化...
在Java中,序列化是通过实现`java.io.Serializable`接口来实现的。 序列化主要有以下几个关键知识点: 1. **实现Serializable接口**:要使一个类能够被序列化,该类必须实现`Serializable`接口。这个接口没有定义...
如果你有两个平台之间通过序列化进行数据交换,如果在序列化后修改了类的定义但没有更新`serialVersionUID`,那么在反序列化时就会出现问题,因为`serialVersionUID`不再匹配,Java会抛出`InvalidClassException`。...