您似乎缺少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 路径只是临时的.. :-)