Java 可序列化混淆

标签 java jakarta-ee serialization

最近,我们的项目需要重新设计。但是当我使用JAVA的接口(interface)Serialized时,我花费了很多时间。

现在有两个程序:A和B。

  1. A 处于离线状态,其功能是将 JSON 数据转换为 C 类。
  2. 然后序列化C并将其存储到redis中(现在C是一个对象)
  3. B 获取对象,反序列化它,并将其转换为 C

但它不起作用。在日志信息中,我发现,A和B中的C类必须具有相同的目录。也就是说,当我将C放入A中时,包目录为“com.hello.src” .a”,在 B 中,包目录为“com.world.src.b”,B 程序将抛出 ClassNotFoundException,因为 B 的 JVM 找到了目录为“com.hello.src.a”的 C!

当我将 C 放入具有相同包目录的 A 和 B 中时,它可以工作。我想知道是否有更好的方法来解决这个问题。当我反序列化时,我在B程序中指定包目录来查找类C(就像我告诉B的JVM使用包目录“com.world.src.b”查找C)

最佳答案

将类从一个包复制到另一个包是完全没有意义的,并且是导致此类问题的原因。决定您希望类 C 位于哪个包中,然后将其保留在那里,在其所在的位置使用它。

关于Java 可序列化混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21152793/

相关文章:

java - 如何在 Java 中使用 lambda 表达式搜索集合?

java - java中的类实现是什么?

jakarta-ee - 如何配置 Wildfly 连接到 RabbitMQ?

c - 用 C 序列化 double 和 float

java 。序列化数组

java - 如何最好地用Java实现 war 迷雾?

javascript - 无法打开与同一 SockJS 端点的多个连接

java - 对目录结构有点困惑

jakarta-ee - Vaadin 7,Atmosphere 和服务器推送问题

java - 将消息对象从 JavaMail 保存到文件系统