相关疑难解决方法(0)

即使类与META-INF/services位于同一JAR文件中,服务加载程序也找不到服务提供者类

我正在成功运行一个C++应用程序,该应用程序使用JAR文件作为类路径参数加载JVM.然后,应用程序成功使用JNI调用来执行此JAR文件中.class文件中定义的各种函数.

.jar文件的目录结构中包含第三方.class文件集 - 从jai_imageio.jar合并的文件(这些.class文件及其完整目录结构,使用Intellij IDEA合并到此单个.jar文件中).合并的.jar文件中还包括来自原始jai_imageio.jar的行manifest.mf- 特别是implementation-title相关行.此外,该meta-inf/services文件夹存在,也从jai_imageio.jar复制.services目录中列出的各种服务看起来是正确的.

特别地,javax.imageio.spi.ImageOutputStreamSpi该内meta-inf/services在.jar文件夹中包含的单个线com.sun.media.imageioimpl.stream.ChannelImageOutputStreamSpi,并有在恰好由线indicatted的目录对应于该.jar文件内的类:com/sun/media/imageioimpl/stream/ChannelImageOutputStreamSpi.class.

但是,当Java代码执行以下行时:

ImageIO.write(image, "tiff", file); // Assume 'image' is a BufferedImage and 'file' is a File
Run Code Online (Sandbox Code Playgroud)

...它抛出异常:

java.util.ServiceConfigurationError: javax.imageio.spi.ImageOutputStreamSpi:
Provider com.sun.media.imageioimpl.stream.ChannelImageOutputStreamSpi not found
Run Code Online (Sandbox Code Playgroud)

......即使这个类同一个.jar文件中存在,如上所述.

有人可以解释为什么会发生这种错误,以及我应该怎么做才能解决它.

c++ java java-native-interface

6
推荐指数
1
解决办法
4093
查看次数

标签 统计

c++ ×1

java ×1

java-native-interface ×1