ObjectInputStream的反序列化Java运行时错误
我突然犯了这个错误。它以前一直工作到今天。我想知道java是否更新了或是什么东西,并阻止了它的工作
我得到的错误是:
java.io.InvalidClassException: javax.swing.JComponent; local class incompatible: stream classdesc serialVersionUID = -1030230214076481435, local class serialVersionUID = -2790168081368361182
当我执行以下操作时,就会发生这种情况
....
ObjectInputStream open = new ObjectInputStream(openFile);
Object obj = open.readObject(); <--- dies here
我应该如何解决此问题。我希望能够再次打开我的文件
谢谢
# 1 楼答案
这可能是因为您在jdk/jre版本中创建的文件
openFile
与您现在运行的版本不同。所以JComponent
类的serialVersionid是不同的尝试使用以前的jre运行应用程序(不能说是旧的还是新的)
# 2 楼答案
将clsas serialVersionUID
-2790168081368361182
更改为-1030230214076481435
,然后再试一次# 3 楼答案
对。我怀疑你换了Java的版本。注意javadoc for JComponent表示:
除了切换回之前使用的JRE/JDK之外,您没有什么其他的方法可以这么做。长期的解决办法是重新设计应用程序,以其他方式存储状态