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