您似乎缺少META-INF/services/服务注册表获取 Spi 类所需的资源。
资源是文本文件,需要以它们实现的 Spi 类命名(一个用于编写器,一个用于读取器),并且包含一行与您的 Spi 实现类的确切名称。
您需要以下文件(在 java_imageio/wrapping/java/openjp2/src/main/resources 中):
/META-INF/services/javax.imageio.spi.ImageReaderSpi
# File content (comments allowed)
org.openJpeg.JP2KOpenJpegImageReaderSpi
/META-INF/services/javax.imageio.spi.ImageWriterSpi
# File content (comments allowed)
org.openJpeg.JP2KOpenJpegImageWriterSpi
一些附加评论:虽然与注册没有直接关系,但我浏览了您的源代码,您的 Spi 类可能存在其他问题。
- 为您
inputTypes列出File和byte[]。URL虽然这些类型可能没问题,但ImageIO可能还需要您支持ImageInputStream(大多数读者只支持此)才能正常运行。请参阅 上的静态read方法ImageIO,以及它们是如何实现的。
canDecodeInput应该查看文件/流内容以识别格式“魔术”标识符或标题结构。如果您只是简单地返回true,您的读者将尝试解码任何内容File,byte[]而URL不管内容如何,而不会给其他读者正确阅读它们的机会。再说一次,我认为您必须支持ImageInputStream作为正常操作的输入。
- (我假设硬编码的 JNI 路径只是临时的.. :-)