问题标签 [serialversionuid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在这里使用 serialVersionUID 的目的是什么?
可能重复:
我为什么要关心serialVersionUID?
我正在检查 Struts2 验证文档。即使在这里它也被定义:
使用 serialVersionUID 的目的是什么,如何使用它(使用随机数?)以及在该文档中使用它的目的是什么?
serialization - 无法理解我的 java.io.InvalidClassException:javax.swing.JComponent
我正在使用序列化与我的服务器通信。这样我的小程序检索JTree
在服务器中创建的。在 Eclipse 和 appletViewer 中,我的小程序运行良好,但是当我尝试从服务器启动我的小程序时,我的控制台上出现此错误
java.io.InvalidClassException: javax.swing.JComponent; 本地类不兼容:stream classdesc serialVersionUID = 5858390075012080263,本地类serialVersionUID = -1030230214076481435
我试图为我的项目的每个类获取serialVersionUID,serialver
但它们都没有 serialVersionUID = 5858390075012080263
。
当我尝试反序列化我的对象时发生错误。除此之外,错误说
java.io.InvalidClassException: javax.swing.JComponent
.
如何确定JComponent
导致此错误的原因?是我的JTree
吗?如何设置 serialVersionUID?通过创建一个扩展此 JComponent 的类并设置 serialVersionUID?
scala - scala类序列化,无法修复SerialVersionUID
我目前正在测试远程参与者在 Android 和 Windows 之间进行通信。Actors 远程发送不同的类,我在其中设置了 serialVersionUID。
这是我的序列化类的代码:
问题是远程演员调试说不兼容的类有问题:
为什么我的 SerialVersionUID 对编译器无关紧要?
如何修复serialVersionUID?或者也许还有另一个问题?
谢谢
java - java中的serialVersionUID是什么,通常在异常类中?
可能重复:
我为什么要关心serialVersionUID?
我正在浏览一些异常处理代码,我看到了一些名为 serialVersionUID 的东西。这个uid是干什么用的??是只限例外还是全班都可以用???这个id有什么好处???
java - 在这种情况下,抑制警告不是比添加 serialVersionUID 更好的选择吗?
Web 应用程序中的一个常见场景:
- 应用程序有很多类需要存储在 Session 中并且是可序列化的
- 开发人员收到一堆关于“Serializable 类未实现 serialVersionUID”的警告
- 开发者耸耸肩,点击 IDE 的“add serialversionUID”,问题就解决了吗?
我原则上不喜欢自动添加serialVersionUID,因为该解决方案本质上意味着
- 最重要的是开发人员说“我知道我的更改什么时候会破坏序列化,什么时候不会,并且想要控制它而不是 JVM”,而实际上他不知道这些事情并且不想控制它们
- 添加 serialVersionUID = 6266256561409620894L 既混乱又丑陋(好吧,你可以使用 1L)
我了解在类兼容性存在问题的应用程序中添加 serialVersionUID,开发人员会积极考虑并理解相关问题。
在典型的 Web 应用程序中,类的序列化何时中断并不重要。部署新版本时,可能会破坏一些无关的序列化会话,但这通常不是问题(很少有应用程序实际上正确处理序列化会话的版本兼容性)。
底线:建议“始终在源文件中明确定义 serialVersionUID”不是很简单吗?
java - 从 Java 5 开始不再需要 serialVersionUID?
我最近读到一条评论说,从 Java 5 开始,不再需要使用 serialVersionUID 来使同一类的不同版本兼容序列化/反序列化。这个对吗?也许它与协变返回类型混淆了。所以想和大家一起看看。
java - 为什么 Java 编译器会创建一个 serialVersionUID 合成字段?
作为调试应用程序的一部分,我注意到它Field.getDeclaredFields()
返回了一些合成字段,包括serialVersionUID
扩展接口的类中的字段,尽管没有扩展Serializable
。
为什么编译器会添加这样的字段?
更新
实际上,还$VRc
创建了一个合成领域。
java - 为什么我的异常类需要序列化?
当您使用 Exception 类扩展一个类(用于创建新异常)时,您会收到一个警告,提示您有一个serialVersionUID
. 我知道这serialVersionUID
在序列化和反序列化时起着重要作用,但是当我的异常需要序列化时呢?谁能给我一个实际案例,我希望我的自定义异常类具有序列化和反序列化?
java - 为什么 Hibernate 不生成带有 serialVersionUID 列的 DDL?
hbm2ddl
当我使用 Maven 插件添加目标时,我得到了这个 DDL(postgres 目标)hibernate3-maven-plugin
:
我定义了所有显示的列。
我在网上看到的所有使用示例:
从来没有@Column
注释。我的 DDL 没有它的列。别人的吗?
那么Java中的反序列化代码是如何知道一个类的哪个版本被序列化和存储的,而不是它被反序列化的那个版本呢?
java - Java Externalizable serialVersionUID
如果我实现 Externalizable,是否需要在该类中指定 serialVersionUID 以实现版本兼容性?
换句话说,Java 在反序列化 Externalizable 对象时会检查 serialVersionUID 吗?