2012-08-16 2 views
1

클래스가있다. 그러나이 클래스는 ImageIO에 액세스 할 수없는 것으로 보입니다. 그래서이 코드 :추가 항아리의 jai_imageio.jar에서

ImageIO.scanForPlugins(); 
IIORegistry.getDefaultInstance().registerApplicationClasspathSpis(); 
Iterator<ImageReader> ir = ImageIO.getImageReadersByFormatName("jpeg"); 
while(ir.hasNext()) { 
    ImageReader r = ir.next(); 
    System.out.println("can read raster: " + r.canReadRaster()); 
    System.out.println(r); 
} 

결과 다음과 같은 출력 : 기계의

can read raster: true 
[email protected] 

99 %. 그러나 하나의 컴퓨터에서이 결과가 출력됩니다.

Can read raster: false 
[email protected]a1 
Can read raster: true 
[email protected] 

왜 그런가? 클래스 패스에 ImageIO 플러그인을 추가하는 것만으로도 더해야할까요? 어떻게 든 ImageIO 레지스트리에서 ImageReader를 언로드 할 수 있습니까?

배경은 사실 내 문제는 일부 외부 불변 코드가 래스터를 읽을 ImageIO에서 레지스트리에서 첫 번째하는 ImageReader를 사용하도록되어 있다는 점이다. 그러나 불행히도 한 대의 PC에서 첫 번째 ImageReader는 CLibJPEGImageReader입니다. JDK와 클래스 패스는 동일하므로 CLibJPEGImageReader가 항상 레지스트리에 있어야합니다. classpath에 플러그인이있는 jar를두면 ImageIO에 표시 될 수 있습니다.

답변

관련 문제