0
我有一個Java程序,我添加了JAI Image I/O以支持TIFF圖像格式。需要安裝JAI Image I/O包。 https://java.net/projects/jai-imageio/
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(); * 和becasue這也是本拋出異常的:
Need to install JAI Image I/O package. https://java.net/projects/jai-imageio/
雖然JAI圖像I/O已經在類路徑(否則在Eclipse運行會失敗)
只是想知道,爲什麼你會選擇TIFF而不是其他圖像格式? – kevto
'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