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 =真

然後正常工作。