3

我试图在多线程环境中使用ImageIO.read从inputstream读取图像。下面是代码,ImageIO.read在多线程执行中抛出异常

entity = httpResponse.getEntity(); //httpResponse is apache hc response object 
bufImage = ImageIO.read(entity.getContent()); //reading image 

基本上,我使用的Apache的HttpClient和阅读一个图象作为物流制备的HttpConnection,然后将其转换为BufferedImage的(bufImage)。

此代码在正常运行时工作正常。当我运行它在多线程中,我得到以下异常,

Exception in thread "Thread-3258" java.lang.NoClassDefFoundError: Could not initialize class sun.java2d.Disposer 
    at javax.imageio.stream.FileCacheImageInputStream.<init>(Unknown Source) 
    at com.sun.imageio.spi.InputStreamImageInputStreamSpi.createInputStreamInstance(Unknown Source) 
    at javax.imageio.ImageIO.createImageInputStream(Unknown Source) 
    at javax.imageio.ImageIO.read(Unknown Source) 
    at com.example.ImgDownload.run(ImgDownload.java:60) 
    at java.lang.Thread.run(Unknown Source) 

的ImgDownload.java:60是我读ImageIO的使用前面提到的线。我该如何解决这个问题?

感谢, 阿比

回答

0

难道是你在你的“生产”环境中使用不同的JRE/JDK的情况下 - 即当您在多线程环境中运行呢?类加载器所指的类是一个特定于太阳的类 - 你是否在使用类似openjdk的东西,也许在其他环境中出现错误?

+0

我正在使用相同的。环境也是一样的,我试图将它作为线程来运行......它不起作用,所以使它成为通常的正常代码。 – Abhishek 2011-06-14 16:38:06

1

我在一个运行的应用程序Ubuntu的12

我已经安装libxtst6这个Java参数添加到我的JAVA_OPTS变量:-Djava.awt.headless =真

然后正常工作。