我保存了一个ArrayList<MyClass>
作为带有 ObjectOutputStream
的对象。现在,我如何在另一个应用程序项目上使用 ObjectInputStream
读取该对象?我尝试了一下,它抛出了 ClassNotFoundException
。我已经复制了MyClass
从项目 1 到项目 2。我还需要做其他事情吗?
最佳答案
您不应该复制一个类并期望它看起来相同 - Java 编译器/JVM 会注意到更改。使用完全相同的类文件!!!
有几个版本可以这样做:
- 交付 Project1 和 Project2 并设置您的 CLASSPATH
- 将同一包中的类文件复制到Project2
- 将包含
MyClass
的 Jar 附加到 Project2
还有一点你永远不应该忘记:每个Serialized
都应该有一个serialVersionUID
Eclipse会自动发出警告 - 单击它并生成它。如果您没有 Eclipse,请使用 JDK 中的 serialver
。
但不要忘记:如果您的类发生更改,导致新版本无法解释旧版本,请更改 serialversionUID
。
关于Java ObjectInputStream 从不同应用程序读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25704585/