0

我使用 ObjectOutputStream 将 PublicKey 实例保存在文件中。这个文件然后存储在一个 jar 文件中,然后由 JBoss 加载。我正在尝试读取此文件,但它向我抛出了一个异常,告诉我它不可序列化。这是代码:

InputStream 输入 = KeyLoader.class.getClassLoader().getResourceAsStream(resource); ObjectInputStream objectInputStream = new ObjectInputStream(input); 对象 obj = objectInputStream.readObject(); 关键输出 = (Key) obj; objectInputStream.close(); 返回输出;

这向我抛出了这个异常发生了一个异常:java.io.NotSerializableException

4

1 回答 1

0

我不确定 jar 文件中的序列化/反序列化,但无法查看其余代码,我可以说几件事:

  1. 确保您尝试序列化/反序列化的所有类都实现了可序列化。
  2. 如果您不能执行第 1 项,那么您可以尝试获取 Key 对象的编码形式,例如key.getEcnoded(),这将允许您使用密钥的字节进行输入/输出。

编辑: 我对 JBoss 不是很熟悉,但也许可以尝试使用 JBossObjectInputStream 和 JBossObjectOutputStream (org.jboss.serial.io)。您还必须将 jboss-serialization.jar 添加到您的类路径中。见链接

另外,我以前从来没有做过这种事情,但是如果您认为jar文件使事情变得复杂,但是您应该可以使用java.util.jar包中的一些类来简化带有jar文件的IO操作。

我希望这在某种程度上有所帮助。

于 2010-05-09T16:11:37.067 回答