【发布时间】:2014-03-20 04:40:36
【问题描述】:
我正在尝试将 PDF 转换为 tif 图像。我使用以下代码按格式获取图像编写器。
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("TIFF");
if (writers == null || !writers.hasNext()) {
throw new ImageWritingException();
}
当我在 Eclipse 中独立运行应用程序时,这可以正常工作。但是当我将应用程序部署到 linux 中的 tomcat 服务器时,writers==null 为 false,但 !writers.hasNext 为 true,导致抛出异常。
我使用 maven 来构建战争项目。
我在 pom 文件中有以下依赖项。
<dependency>
<groupId>org.icepdf</groupId>
<artifactId>icepdf-core</artifactId>
</dependency>
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai_imageio</artifactId>
</dependency>
<dependency>
<groupId>com.sun.media</groupId>
<artifactId>jai-codec</artifactId>
</dependency>
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_core</artifactId>
</dependency>
两种环境之间有什么区别?我该如何解决这个问题?
【问题讨论】:
-
如果我记得,Tiff 不支持开箱即用,您需要 JAI 插件...
-
我认为我指出的最后一个依赖项是 jai_core。另外,正如我所说,它在开发机器 Eclipse 中运行良好。只有在linux下部署到Tomcat服务器时才会出现问题
-
您是否将
jai_core放在Java 的ext目录中? -
据我记忆,是的。当它不在那里时,我们遇到了问题,并尝试使用自定义类加载器来加载我们的应用程序。一旦我们把它放在那里,一切都奏效了
-
JVM应该服从最高权限。 ext 目录中的 Jars 首先被加载,因此当类加载器查找类时,它们首先检查父级......从内存中......所以他们应该首先从 ext 目录中找到类
标签: java image maven tomcat tiff