3

ImageIO.read를 사용하여 다중 스레드 환경의 입력 스트림에서 이미지를 읽으려고합니다. 다음은 내가 BufferedImage의 (bufImage)로 변환 한 후, 아파치 HttpClient를를 사용하여 스트림으로 이미지를 읽는 HttpConnection에 제작하고, 기본적으로ImageIO.read는 다중 스레드 실행시 예외를 throw합니다.

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

코드입니다.

이 코드는 정상적으로 실행되면 정상적으로 작동합니다. 내가 여러 스레드로 실행하면, 나는 다음과 같은 예외를 얻고,

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과 같은 것을 사용하고 있습니까? -Djava.awt.headless이

그런 다음 그것을 잘 진정한 작동 =

+0

동일한 내용을 사용하고 있습니다. 환경도 동일합니다. 스레드로 실행하려고했습니다 ... 작동하지 않아 일반적인 일반 코드로 변경되었습니다. – Abhishek

1

나는 libxtst6를 설치하고 내 JAVA_OPTS에 변수이 자바 매개 변수를 추가 한 우분투 (12)

하나의 응용 프로그램을 실행하는거야 .

관련 문제