- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
InvalidClassException: local class incompatible: stream classdesc serialVersionUID = -196410440475012755, local class serialVersionUID = -6675950253085108747
我在以下场景中使用 InvalidClassException 进行构造。在这里,我的 EAR 安装在 4 个 Websphere 应用程序服务器中,并在其中共享执行。有时我从 POJO 类中得到异常 InvalidClassException,它实现了 Serializable 接口(interface)。请提供任何线索。我对此一无所知。
最佳答案
当您实现 java.io.Serializable 接口(interface)以使类可序列化时,编译器会查找名为“serialVersionUID”的 long 类型的静态最终字段。如果该类没有显式声明此字段,则编译器将创建一个这样的字段并为其分配一个值,该值来自 serialVersionUID 的实现相关计算。此计算取决于类的各个方面,它遵循 Sun 提供的对象序列化规范。但是,不能保证该值在所有编译器实现中都相同。
此值用于检查类在序列化方面的兼容性,这是在反序列化保存的对象时完成的。 Serialization Runtime 验证发送者类的 serialVersionUID(用于保存流中对象的状态)和接收者类的(用于恢复对象的类,可能在其他系统中)两者完全相同。如果接收器系统加载的类具有与序列化过程中使用的类不同的 serialVersionUID,那么我们将得到一个 InvalidClassException。
注意——强烈建议您在所有要使其可序列化的类中显式声明和初始化类型为 long 并命名为“serialVersionUID”的静态最终字段,而不是依赖于此字段值的默认计算。这种计算非常敏感,并且可能因一个编译器实现而异,因此即使对于同一类,您也可能会得到 InvalidClassException 只是因为您在序列化过程的发送端和接收端使用了不同的编译器实现。
在大多数情况下,您将仅为该字段使用“私有(private)”访问说明符,因为声明通常仅适用于声明它的类,我们真的不需要在子类中继承该字段或访问它从外面。因此,我们几乎没有任何理由不将其保密。
关于java.io.InvalidClassException :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7173352/
在我的程序中,我有一个 FacebookUser 类,其中包含该用户的所有 friend 的 ArrayList。所有这些 friend 也可能有 friend 。我正在使用递归来获取一个新的 Arr
我在与同事的代码集成时遇到一些问题。 他有一个实体类,我们称之为FooEntity: @Entity @XmlRootElement @Table(name = "...") public class
InvalidClassException: local class incompatible: stream classdesc serialVersionUID = -19641044047501
这个问题已经有答案了: What is a serialVersionUID and why should I use it? (25 个回答) 已关闭 9 年前。 请告诉我我该怎么做这个异常即将到来
在我的实现中,我使用 Java 序列化来发送一组二进制对象,这些二进制对象以通知 header 开头,通知 header 告知将传递多少个对象以及它们各自的大小。首先进行简单的测试,我能够成功传输 h
我是 RMI 新手。从java文档中我发现当本地和远程文件中的串行版本不匹配时会抛出InvalidClassException。但我写了一个虚拟类,即使静态创建的serialVersionUID,它也
读完连载后,我尝试对书中提供的示例进行实验。以下代码有一些变化,这基本上是从 SCJP 书中挑选的。 import java.io.FileInputStream; public class Seri
此错误并不典型,通常我只需在本地定义serialVersionUID即可解决该错误。这次我将其定义如下: private static final long serialVersionUID = -4
这是我第一次在android上画东西。我按照developers.android.com 上的教程进行操作: http://developer.android.com/training/custom-
这个问题已经有答案了: java.io.invalidClassException during serializing/deserializing (3 个回答) 已关闭 7 年前。 我正在开发一款
我在数据库中保存了一个 java 对象,然后几天后我更改了我的 jre 版本。现在,当我尝试读取同一个对象时,出现以下异常: Exception in thread "main" java.io.In
我正在尝试序列化一个对象,然后在将其数据发送到客户端程序后将其反序列化。 这是对象继承如何工作的示例。我正在序列化和反序列化的对象是人。 生活 -> 动物 -> NPC -> 人 -> child L
我正在解决这个问题,但收到此错误无法指出错误: 这是我的课: package stdaccmdmngmt; import java.io.File; import java.io.FileInputS
这个问题已经有答案了: 奥 git _a (5 个回答) 已关闭 9 年前。 我不知道为什么会发生这种情况。 class Course implements Serializable {
每当我尝试在项目中运行它时,我都会在运行时遇到异常。 EXCEPTION MESSAGE :Message : java.io.InvalidClassException: com.mypackage
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
public static void save(Settings settings) { try { ObjectOutputStream os =
我正在尝试制作在线绘画游戏。为此,我在 Android 中使用 Path 类,我需要将它发送到我的 Java 服务器。为此,我曾尝试扩展 Path 类,如下所示: public class Seria
当我尝试从数据库(mysql)检索blob数据时,出现以下异常。 java.io.InvalidClassException: com.nmsworks.cygnet.tmf.mtnm.element
我在执行 Java 程序时遇到错误。请帮我做什么?错误如下: java.io.InvalidClassException: buddyconnect.UserInfo; local class inc
我是一名优秀的程序员,十分优秀!