Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决java.io.IOException:无法加载ByteArrayOutputStream中jcchart序列化的图像内容_Java_Serialization_Applet_Jcchart - Fatal编程技术网

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

如何解决java.io.IOException:无法加载ByteArrayOutputStream中jcchart序列化的图像内容,java,serialization,applet,jcchart,Java,Serialization,Applet,Jcchart,大家好,我在下面尝试在ByteArrayOutputStream中序列化JCChart对象 ByteArrayOutputStream bos = new ByteArrayOutputStream() ; ObjectOutput out=new ObjectOutputStream(bos); out.writeObject(chart2); out.flush(); out.close();

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


有谁能告诉我问题出在哪里以及如何解决这个问题吗?也许你遇到了与本文中提到的问题相同的问题

这里的分辨率是将作为序列化对象成员的所有图像标记为
瞬态
——这意味着它们不会被序列化。如果您的
图表
对象具有类型为
图像图标
的成员,它可以解决您的问题(并解释堆栈跟踪)


编辑:请记住,如果图像的内容是动态的和用户定义的,则不序列化图像可能不是您想要的,在这种情况下,在反序列化时您将丢失图像的内容。但是从上下文来看,我假设它们是常量,在序列化过程中可以忽略。

当我尝试将具有ImageIcon的对象写入文件时,我遇到了相同的问题。这是因为ImageIcon的构造函数的文件地址不正确,因此无法使用序列化将其写入文件。

我也遇到了同样的问题,Ali()的解决方案非常有用

ImageIcon可序列化(图像不是thoguh)。但是,我忘了将一个ImageIcon对象中使用的图像复制到正确的目录中,然后出现了此错误


在序列化不存在的映像之前,请确保文件路径存在!!:P

哪一行引发异常?你能添加trace?out.writeObject(图表2);抛出异常。java.io.IOException:未能在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(未知源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)在java.lang.reflect.Method.invoke加载javax.swing.ImageIcon.writeObject(未知源)的图像内容(未知源)在java.io.ObjectStreamClass.invokeWriteObject(未知源)实际上,当我尝试System.out.println(chart.ImageStatus)时,图像icones图像无法加载;然后它会打印false@user571616-您可以添加从代码到
java.lang.reflect.Method.invoke的跟踪吗(…
调用并指定代码中“触发”的方法这?最好编辑帖子而不是评论。我已经看到了OTN帖子,但这对我没有帮助,我如何标记作为Multichart类一部分的临时图像。我没有在我的类中声明这些图像。实际上,我正在尝试克隆一个类的对象,它是Multichart的子类,因为只要克隆我的类就可以了不克隆所有对象深度克隆需要整个对象。但是许多引用如图例、页脚不支持克隆,因此我无法进行深度克隆。这就是为什么我决定通过ByteArrayOutputStream序列化对象,然后反序列化。不可以忽略图像。它们是我之后需要的主要内容序列化是否检查了加载状态?
image.getImageLoadStatus()
?否我没有检查image.getImageLoadStatus(),但如果我打印System.out.println(chart.ImageStatus)在这个过程之前,它显示为false。你能告诉我如何加载图像吗?我再次看到我的代码。实际上,ImageStatus是我自己的变量,我用它来查看图像的状态,这是错误的。请告诉我加载图表图像的另一种方法。