我突然得到这个错误。它一直工作到今天。我想知道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
我应该尝试解决此问题。我希望能够再次打开我的文件。
感谢。
答案 0 :(得分:3)
这是因为您在jdk / jre版本中创建的文件openFile
与您现在运行的版本不同。所以JComponent
类'serialVersionid是不同的。
尝试使用之前的jre运行你的应用程序(不能说它是旧的还是新的)。
答案 1 :(得分:2)
是。我怀疑你已经切换了Java的版本。请注意,javadoc for JComponent说明了这一点:
“警告:此类的序列化对象与以后的Swing版本不兼容。当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。从1.4开始,支持所有JavaBeans的长期存储已添加到java.beans包中。请参阅XMLEncoder。“
我应该尝试解决此问题。我希望能够再次打开我的文件。
除了切换回之前使用的JRE / JDK之外,你没有什么可以做的。长期解决方案是重新设计您的应用程序,以便以其他方式存储状态。
答案 2 :(得分:0)
将您的班级serialVersionUID -2790168081368361182
更改为-1030230214076481435
,并尝试一下。