首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java.io.InvalidClassException:本地类不兼容:

java.io.InvalidClassException:本地类不兼容:
EN

Stack Overflow用户
提问于 2012-04-30 13:22:27
回答 5查看 132.6K关注 0票数 52

我创建了客户端和服务器,然后为了序列化的目的在客户端添加了一个类,然后简单地转到我硬盘驱动器中客户端的文件夹,并将其复制粘贴到服务器对应的位置,分别是classname.classclassname.java

它在我自己的笔记本电脑上运行良好,但当我想在其他系统上继续我的工作时,当我打开项目文件夹并在客户端尝试连接到服务器后,出现以下错误:

代码语言:javascript
复制
Exception in thread "main" java.io.InvalidClassException: projectname.clasname; local class incompatible: stream classdesc serialVersionUID = -6009442170907349114, local class serialVersionUID = 6529685098267757690
    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)

怎么一回事?是不是因为我用旧版本的IDE运行了这个程序?

编辑

代码语言:javascript
复制
import java.io.Serializable;
import java.net.URL;

public class KeyAdr implements Serializable {
  private static final long serialVersionUID = 6529685098267757690L;

  public URL adr;
  public String key;
}
EN

回答 5

Stack Overflow用户

发布于 2012-04-30 13:29:36

我相信这是因为您在客户端和服务器端使用同一个类的不同版本。它可以是不同的数据字段或方法

票数 0
EN

Stack Overflow用户

发布于 2012-04-30 14:05:52

java中的序列化并不意味着长期持久化或传输格式-它对于这一点来说太脆弱了。由于类字节码和JVM之间的细微差别,您的数据将不再可读。为您的任务使用XML或JSON数据绑定(XStream快速且易于使用,并且有大量的替代方案)

票数 0
EN

Stack Overflow用户

发布于 2015-03-08 23:39:23

异常消息清楚地表明,类版本(也包括类元数据)随着时间的推移而发生变化。换句话说,序列化期间的类结构在反序列化期间是不同的。这就是最有可能“发生”的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10378855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档