当对象的类存储在外部jar中时,如何反序列化对象?

snickers10分钟

我实现Serializable了保存对象的方法,如下所示:

public class MyType implements Serializable {

    @Override
    public String toString() {
        return "This is a MyType";
    }

    public static void main(String[] args) {
        try {
            ObjectOutputStream outStream = new ObjectOutputStream(
                new FileOutputStream("objecturl");
            outStream.writeObject(new MyType());
            outStream.flush();
        } catch (Exception e) { e.printStackTrace(); }
    }
}

我曾经运行过该程序,因此MyType保存在objecturl

然后,我将该类库打包到位于的jar中jarurl

如果要使用保存在新程序中的对象MyType,给定包含的jar,该如何访问我的新程序MyType.class


换句话说,如何使用jarjarurl来使以下内容工作而不会得到ClassNotFoundException

public class NewProgram {

    public static void main(String[] args) {
        try {
            ObjectInputStream inStream = new ObjectInputStream(
                new FileInputStream("objecturl");
            Object o = inStream.readObject();
            System.out.println(o.toString());
        } catch (Exception e) { e.printStackTrace(); }
    }
}

输出为“这是MyType”,并且MyType不包含在与该库相同的库中NewProgram


显然,还有其他方法可以使程序输出“ This is MyType”。我在这里主要关心的是序列化的,重写的实现的用法。

我知道这与ClassLoaders有关,但是我不确定在这种设置下它是如何工作的,在这种设置下,类的类型是完全未知的,但类的父级是已知的。

塞洗

我自己还没有完成此操作,但是从某种程度上来说,问题似乎有两个阶段。

  1. 创建一个可以加载相关类的ClassLoader。
  2. 创建(或在第三方库中找到一个)ObjectInputStream的子类,该子类将覆盖resolveClass方法以使用您的ClassLoader而不是自动选择的方法。使用ObjectInputStream的子类读取文件。

https://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#resolveClass%28java.io.ObjectStreamClass%29

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何反序列化存储在Redis的对象时,如果所存储的对象更改类名?

来自分类Dev

反序列化数组时如何获取对象json

来自分类Dev

反序列化对象图时,hashCode()中的NullPointerException

来自分类Dev

如何将序列化的JSON视图数据输出为对象数组,而不是包装在外部对象中?

来自分类Dev

如何在 Typescript 中序列化/反序列化复杂对象,例如反序列化对象与序列化对象的类型相同

来自分类Dev

如何使用 DjangoJSONEncoder 正确反序列化存储在 JSONField 中的日期时间对象?

来自分类Dev

如何使用.net支持对象序列化和反序列化以更改类结构?

来自分类Dev

如何使用可序列化对象数组反序列化类

来自分类Dev

如何使用可序列化对象数组反序列化类

来自分类Dev

如何使用反序列化的对象?

来自分类Dev

如何反序列化Json对象?

来自分类Dev

如何反序列化 JSON 对象?

来自分类Dev

在 Java 中序列化和反序列化对象时出现 bufferedImage 错误

来自分类Dev

如何在Haskell中对通过网络发送的对象进行序列化/反序列化?

来自分类Dev

如何在Kotlin中序列化/反序列化Custom对象的数组?

来自分类Dev

如何使用XStream序列化/反序列化类型层次结构中的对象?

来自分类Dev

如何使用对象的值反序列化对象

来自分类Dev

反序列化Java对象中的通用对象

来自分类Dev

在反序列化对象时如何找到对象所属的正确子类?

来自分类Dev

将外部Web服务和XML反序列化为.NET中的类对象

来自分类Dev

复杂的Json与类的C#对象反序列化

来自分类Dev

如何反序列化一个对象中的多个对象?

来自分类Dev

使用xsd.exe反序列化-如何反序列化对象而不是DataSet?

来自分类Dev

当对象数量未知时,反序列化Json

来自分类Dev

实体恢复时无法反序列化数组对象

来自分类Dev

Java SerialIzation:反序列化对象时出现“ ClassNotFoundException”

来自分类Dev

反序列化json对象时发生异常

来自分类Dev

从 Kafka Streams 反序列化对象时出错

来自分类Dev

发送对象时忽略 JSON 字段(反序列化)

Related 相关文章

  1. 1

    如何反序列化存储在Redis的对象时,如果所存储的对象更改类名?

  2. 2

    反序列化数组时如何获取对象json

  3. 3

    反序列化对象图时,hashCode()中的NullPointerException

  4. 4

    如何将序列化的JSON视图数据输出为对象数组,而不是包装在外部对象中?

  5. 5

    如何在 Typescript 中序列化/反序列化复杂对象,例如反序列化对象与序列化对象的类型相同

  6. 6

    如何使用 DjangoJSONEncoder 正确反序列化存储在 JSONField 中的日期时间对象?

  7. 7

    如何使用.net支持对象序列化和反序列化以更改类结构?

  8. 8

    如何使用可序列化对象数组反序列化类

  9. 9

    如何使用可序列化对象数组反序列化类

  10. 10

    如何使用反序列化的对象?

  11. 11

    如何反序列化Json对象?

  12. 12

    如何反序列化 JSON 对象?

  13. 13

    在 Java 中序列化和反序列化对象时出现 bufferedImage 错误

  14. 14

    如何在Haskell中对通过网络发送的对象进行序列化/反序列化?

  15. 15

    如何在Kotlin中序列化/反序列化Custom对象的数组?

  16. 16

    如何使用XStream序列化/反序列化类型层次结构中的对象?

  17. 17

    如何使用对象的值反序列化对象

  18. 18

    反序列化Java对象中的通用对象

  19. 19

    在反序列化对象时如何找到对象所属的正确子类?

  20. 20

    将外部Web服务和XML反序列化为.NET中的类对象

  21. 21

    复杂的Json与类的C#对象反序列化

  22. 22

    如何反序列化一个对象中的多个对象?

  23. 23

    使用xsd.exe反序列化-如何反序列化对象而不是DataSet?

  24. 24

    当对象数量未知时,反序列化Json

  25. 25

    实体恢复时无法反序列化数组对象

  26. 26

    Java SerialIzation:反序列化对象时出现“ ClassNotFoundException”

  27. 27

    反序列化json对象时发生异常

  28. 28

    从 Kafka Streams 反序列化对象时出错

  29. 29

    发送对象时忽略 JSON 字段(反序列化)

热门标签

归档