ImageIO.read генерирует исключение в многопоточном исполнении - PullRequest
3 голосов
/ 14 июня 2011

Я пытаюсь использовать ImageIO.read для чтения изображения из inputtream в многопоточной среде.Ниже приведен код,

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

По сути, я делаю HttpConnection с использованием Apache HttpClient и считываю изображение в виде потока, затем преобразовываю его в 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, упомянутый ранее.Как мне это решить?

Спасибо, Аби

Ответы [ 2 ]

1 голос
/ 13 июня 2015

Я запускаю приложение в одной Ubuntu 12.

Я установил libxtst6 и добавил этот параметр java в свою переменную JAVA_OPTS: -Djava.awt.headless = true

Тогда все работает нормально.

0 голосов
/ 14 июня 2011

это тот случай, когда вы используете другой JRE / JDK в своей "производственной" среде - т.е. когда вы запускаете это в многопоточной среде?класс, на который ссылается classloader, является классом, специфичным для Sun. Используете ли вы что-то вроде openjdk, возможно, в другой среде, в которой вы получаете ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...