有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我应该如何解决此问题。我希望能够再次打开我的文件

谢谢


共 (3) 个答案

  1. # 1 楼答案

    这可能是因为您在jdk/jre版本中创建的文件openFile与您现在运行的版本不同。所以JComponent类的serialVersionid是不同的

    尝试使用以前的jre运行应用程序(不能说是旧的还是新的)

  2. # 2 楼答案

    将clsas serialVersionUID -2790168081368361182更改为-1030230214076481435,然后再试一次

  3. # 3 楼答案

    对。我怀疑你换了Java的版本。注意javadoc for JComponent表示:

    "Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the java.beans package. Please see XMLEncoder."


    What should I try to fix this issue. I would love to be able to open my files again.

    除了切换回之前使用的JRE/JDK之外,您没有什么其他的方法可以这么做。长期的解决办法是重新设计应用程序,以其他方式存储状态