Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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 ImageIO.read在多线程执行中引发异常_Java_Multithreading_Thread Safety_Apache Commons_Javax.imageio - Fatal编程技术网

Java ImageIO.read在多线程执行中引发异常

Java ImageIO.read在多线程执行中引发异常,java,multithreading,thread-safety,apache-commons,javax.imageio,Java,Multithreading,Thread Safety,Apache Commons,Javax.imageio,我试图在多线程环境中使用ImageIO.read从inputstream读取图像。以下是代码 entity = httpResponse.getEntity(); //httpResponse is apache hc response object bufImage = ImageIO.read(entity.getContent()); //reading image 基本上,我使用ApacheHttpClient创建一个HttpConnection,并将一个图像作为流读取,然后将其转换为

我试图在多线程环境中使用ImageIO.read从inputstream读取图像。以下是代码

entity = httpResponse.getEntity(); //httpResponse is apache hc response object
bufImage = ImageIO.read(entity.getContent()); //reading image
基本上,我使用ApacheHttpClient创建一个HttpConnection,并将一个图像作为流读取,然后将其转换为BuffereImage(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)
线程“thread-3258”java.lang.NoClassDefFoundError中出现异常:无法初始化类sun.java2d.Disposer 位于javax.imageio.stream.FileCacheMageInputStream。(未知源) 位于com.sun.imageio.spi.InputStreamImageInputStreamSpi.createInputStreamInstance(未知源) 在javax.imageio.imageio.createImageInputStream(未知源) 位于javax.imageio.imageio.read(未知源) 在com.example.ImgDownload.run(ImgDownload.java:60)上 位于java.lang.Thread.run(未知源) java:60是我使用前面提到的ImageIO读取的行。我如何解决这个问题

谢谢,
Abi

您是否在“生产”环境中使用了不同的JRE/JDK,即在多线程环境中运行JRE/JDK?classloader所指的类是一个特定于sun的类——您是否在另一个环境中使用类似openjdk的东西,可能是您遇到错误的环境?

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

我已经安装了libxtst6,并将这个java参数添加到我的java_OPTS变量:-Djava.awt.headless=true


然后它就可以正常工作了。

我也在用同样的。环境也是一样的,我试着以线程的形式运行它……它不工作,所以使用了普通的代码。。