无法从插件反序列化对象

时间:2014-07-22 02:10:04

标签: java reflection deserialization

我的java应用程序有一个插件架构,可以通过添加实现其插件接口的jar文件来扩展其功能。我过去成功使用和部署了这种架构。但是,这一次,我试图从主应用程序序列化/反序列化插件对象。

加载插件工作得很好。测试应用程序甚至可以使用它。

序列化对象也可以正常工作(至少看起来如此)。将对象写入磁盘。

当我尝试反序列化对象时,抛出ClassNotFound。即使在与发现插件和序列化对象相同的应用程序中完成(即类应该已经由类加载器之一)。

我编写了一个加载插件的单个测试应用程序(加载jar文件及其中的所有类),创建插件对象的实例,序列化插件对象,然后尝试将对象反序列化为新的对象(失败的地方)。

失败发生在:

Class.forName(...)

调用readObject()。

我甚至实现了一个自定义ObjectInputStream,它使用与加载插件的类相同的ClassLoader,但这仍然不起作用。

我是否违反了一些我不了解的Java规则? 除了在理论上,这甚至可能吗? 还有其他想法吗?

0 个答案:

没有答案