我想在下面尝试在ByteArrayOutputStream中序列化JCChart对象
ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
ObjectOutput out=new ObjectOutputStream(bos);
out.writeObject(chart2);
out.flush();
out.close();
ObjectInputStream in=new ObjectInputStream(new
ByteArrayInputStream(bos.toByteArray()));
chart_clone=(MyGraph)in.readObject();
in.close();
但是这段代码给出了java.io.IOException:无法加载图像内容
的异常任何人都可以告诉我问题在哪里以及如何解决这个问题
答案 0 :(得分:1)
我有同样的问题,阿里(https://stackoverflow.com/questions/6029144/how-to-solve-the-java-io-ioexception-failed-to-load-image-contents-for-serializa/6712774#6712774)的解决方案非常有用..
ImageIcon是可序列化的(图像不是thoguh)。但是,我忘了将我的一个ImageIcon对象中使用的图像复制到正确的目录中,然后我收到了这个错误。
在序列化真正存在的图像之前,确保文件路径存在! :P
答案 1 :(得分:0)
也许您遇到的问题与此OTN Post中提到的问题相同。
将所有序列化对象成员的图像标记为transient
的分辨率 - 意味着它们不会被序列化。如果您的chart
对象具有ImageIcon
类型的成员,则它可以解决您的问题(并解释堆栈跟踪)。
编辑请注意,如果图像的内容是动态的和用户定义的,那么不按序列化图像可能不是您想要的,在这种情况下,在反序列化时您将丢失其内容。但我从上下文中假设它们是常量,在序列化过程中可以忽略。
答案 2 :(得分:0)
当我尝试将具有ImageIcon的对象写入文件时,我遇到了同样的问题。这是由于ImageIcon的构造函数的错误文件地址,因此无法使用序列化将其写入文件。