Java ObjectInputStream 从不同应用程序读取

标签 java class serialization objectinputstream

我保存了一个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/

相关文章:

java - JAR打包Maven生命周期在哪里定义的?

java - REST 调用的 XSS 预防

java - 将collections.sort()与compareTo一起使用,而不是排序

serialization - Spark kryo 序列化寄存器 Datatype[]

json - spring序列化 Autowiring 字段

Java volatile 语义,JMM 保证

java - 建议使用哪种服务器软件来运行基于 Java 的 Web 服务

java - 在java中将类类型保存为Type数据类型

Python:如何 "kill"类实例/对象?

java - 有没有办法在数据库中存储 Opencv/javacv Mat 对象?