Java ImageIO.read在多线程执行中引发异常
我试图在多线程环境中使用ImageIO.read从inputstream读取图像。以下是代码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,并将一个图像作为流读取,然后将其转换为
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
然后它就可以正常工作了。我也在用同样的。环境也是一样的,我试着以线程的形式运行它……它不工作,所以使用了普通的代码。。