如何解决java.io.IOException:无法在ByteArrayOutputStream中加载图像内容以进行jcchart的序列化

时间:2011-05-17 09:55:33

标签: java serialization applet jcchart

我想在下面尝试在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:无法加载图像内容

的异常

任何人都可以告诉我问题在哪里以及如何解决这个问题

3 个答案:

答案 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的构造函数的错误文件地址,因此无法使用序列化将其写入文件。