我有一个java程序,我添加 JAI Image I / O 以支持 TIFF 图像格式。
A)什么工作正常
此程序在 Eclipse环境中完美运行,此代码打印类名(我认为它是负责的)并且返回true 即TIFF图像编写器已注册:
System.out.println(TIFFImageWriterSpi.class);
ImageIO.scanForPlugins();
Iterator<ImageWriter> it = ImageIO.getImageWritersByFormatName("tiff");
System.out.println(it.hasNext());
A)我的问题
我使用gradle打包项目。生成的JAR包含负责TIFF处理的类:
com\github\jaiimageio\impl\plugins\tiff\TIFFImageWriter.class
com\github\jaiimageio\impl\plugins\tiff\TIFFImageWriterSpi.class
不幸的是,当执行相同代码时, it.hasNext()返回false,即无法使用ImageIO 注册TIFF编写器 .scanForPlugins(); * 因此,这个例外也被抛出:
Need to install JAI Image I/O package. https://java.net/projects/jai-imageio/
虽然 JAI Image I / O 已经在类路径中(否则Eclipse运行会失败)
答案 0 :(得分:0)
使用此代码:
IIORegistry.getDefaultInstance().registerServiceProvider(
new TIFFImageWriterSpi(), ImageWriterSpi.class);
即使在ImageIO.scanForPlugins()时也可以手动注册任何ImageWriterSpi或ImageReaderSpi;失败。