【发布时间】:2019-03-05 13:55:09
【问题描述】:
在处理 javax.imageio.IIOException: Can't create an ImageInputStream! after call ImageIO.read(File file) because of a missing FileImageInputStreamSpi 提供程序 我认识到我的 webapp 中可用的 ImageIO 服务提供程序取决于 Geoserver (http://geoserver.org) webapp 是否在同一个 Tomcat Web 容器中运行:
只有我的网络应用在运行:
- 从 RandomAccessFile 实例化 FileImageInputStream 的服务提供者
- 从文件实例化 FileImageInputStream 的服务提供者
- 从 InputStream 实例化 FileCacheImageInputStream 或 MemoryCacheImageInputStream 的服务提供者
我的 webapp 沿着 Geoserver 2.15.0 webapp 运行:
- NIO 通道 ImageInputStream
- 包装 FileImageInputStream 的服务提供者
- 帮助连接到字符串指向的对象的服务提供者
- 帮助连接到 URL 指向的对象的服务提供者
- 从 RandomAccessFile 实例化 FileImageInputStream 的服务提供者
我的 webapp 中的代码:
IIORegistry reg = IIORegistry.getDefaultInstance();
Iterator<ImageInputStreamSpi> it = reg.getServiceProviders(ImageInputStreamSpi.class, true);
while (it.hasNext()) {
ImageInputStreamSpi spi = it.next();
System.out.println(spi.getDescription(Locale.GERMAN));
}
我正在使用 Tomcat 9.0.16 webapp 和 OpenJDK 11。
我想知道为什么两个 web 应用程序都可能以这种方式干扰 - 这实际上不是一个安全问题吗?
感谢您的一般性澄清。
【问题讨论】:
标签: java tomcat geoserver javax.imageio java-11