我很抱歉,因爲我已經看過這個主題的帖子,但似乎沒有解決我的問題。所以我會盡量做到非常具體。我收到一個StreamCorruptedException
當我嘗試打開一個ObjectInputStream
我ByteArrayInputStream
如何在序列化Java對象時解決StreamCorruptedException?
我需要輸出的對象(X509Certificate
)到XML文件。我的序列號代碼如下所示:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputSream(bos);
oos.writeObject(x509.getData()); // x509 is a DOM Element
oos.close();
bos.close();
XML文檔看起來很好。我輸入的代碼如下所示:
// elem is a DOM Element with contents placed in Context
ByteArrayInputStream bis = new ByteArrayInputStream(
elem.getTextContext().getBytes())
ObjectInputStream ois = new ObjectInputStream(bis);
X509Certificate x509 = (X509Certificate) ois.readObject();
ois.close();
bis.close();
堆棧跟蹤我得到的大部分是通過我自己的代碼並沒有什麼內部的JVM,所以很難追查。這是它是什麼:
java.io.StreamCorruptedException: invalid stream header: 5B0A5B0A
at java.io.ObjectInputStream.readStreamHeader (ObjectInputStream.java:783)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
. my code
. my code
感謝您的任何幫助。
elem.getTextContext()。getBytes()這是從哪裏來的?您需要從ByteArrayOutput流中獲取保存該對象的字節,即bos.toByteArray() –
我很抱歉,我可能會更具體。我在DOM元素中扔文本。 'elem'是「方法」的輸入'getTextContext()'從XML括號內檢索文本。 – jiveturkey
你是否使用完全相同的JVM(包括版本)來序列化和反序列化?有時序列化格式會在版本之間更改而不發出警告 –