2016-11-09 13 views
0

私はJAI Image I/Oを追加してTIFFイメージフォーマットをサポートするJavaプログラムを持っています。正常に動作している何JAIイメージI/Oパッケージをインストールする必要があります。 https://java.net/projects/jai-imageio/

A)

このプログラムはEclipse環境で完全に実行され、このコードを印刷クラス名(私はそれが本当すなわちTIFF画像を担当する1)とリターンであると仮定作家が登録されています

System.out.println(TIFFImageWriterSpi.class); 
    ImageIO.scanForPlugins(); 
    Iterator<ImageWriter> it = ImageIO.getImageWritersByFormatName("tiff"); 
    System.out.println(it.hasNext()); 

A)私の問題

I は、gradleを使用してプロジェクトをパックしました。残念ながら

 com\github\jaiimageio\impl\plugins\tiff\TIFFImageWriter.class 
    com\github\jaiimageio\impl\plugins\tiff\TIFFImageWriterSpi.class 

実行したときに、それはImageIOでを使用してレジスタTIFF作家に失敗した。すなわち、それは同じコードit.hasNext()は、falseを返し:結果のJARは、TIFFの処理を担当するクラスが含まれています.scanForPlugins(); * 、これも、この例外がスローされたのbecasue:

Need to install JAI Image I/O package. https://java.net/projects/jai-imageio/ 

もののJAIイメージI/Oは、このコードを使用してクラスパス(そうでなければ、Eclipseの実行が失敗する)

+0

他の画像フォーマットに比べてTIFFを選択するのはなぜでしょうか? – kevto

+0

'ImageIO.scanForPlugins()'は、 'ServiceLoader'とJARファイル[Service Provider](http://docs.oracle.com/javase/7/docs/technotes/guides/jar/)を使用して、クラスパス上のプラグインをスキャンします。 jar.html#Service_Provider)メカニズムコンパイルされたクラスを持つだけでは不十分です。 JARに適切なサービスプロバイダの設定ファイル(つまり、 '/ META-INF/services/javax.imageio.spi.ImageWriterSpi')もありますか?もしそうなら、 'com.github.jaiimageio.impl.plugins.tiff.TIFFImageWriterSpi'という行が入っていますか? – haraldK

答えて

0

に既にある:

IIORegistry.getDefaultInstance().registerServiceProvider(
      new TIFFImageWriterSpi(), ImageWriterSpi.class); 

手動であってもImageIO.scanForPlugins()任意するImageWriterSpiもしくはするImageReaderSpiを登録することが可能です。失敗する。

関連する問題