我使用Apache FOP 1.1(Java)生成PDF文件。 它在Windows机器上工作正常但是当我使用Ubuntu机器时出现了这个错误
org.apache.xmlgraphics.image.loader.ImageException: The file format is not supported. No ImagePreloader found
我有点困惑。请给我解决方案以解决这个问题。
谢谢
答案 0 :(得分:3)
我只从stackoverflow获得解决方案。我特别感谢这篇文章的作者 Apache FOP in a Java Applet - No ImagePreloader found for data
With reference from above post , To give precedence to XmlGraphics
API ,
1. I have excluded XML-graphics API from FOP jar
2. added new maven dependency XmlGraphics API and placed above FOP dependancy
3. so that POM will give priority
<dependency>
<groupId>xmlgraphics-commons</groupId>
<artifactId>xmlgraphics-commons</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.apache.xmlgraphics</groupId>
<artifactId>fop</artifactId>
<version>1.1</version>
<exclusions>
<exclusion>
<artifactId>xmlgraphics-commons</artifactId>
<groupId>org.apache.xmlgraphics</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.avalon.framework</groupId>
<artifactId>avalon-framework-api</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.avalon.framework</groupId>
<artifactId>avalon-framework-impl</artifactId>
<version>4.3.1</version>
</dependency>
谢谢
答案 1 :(得分:2)
问题是META-INF/services/
jar文件和fop
jar文件中xmlgraphics-commons
中存在的配置文件之间存在冲突。
如果您正在使用maven并希望避免可能导致麻烦的排除,您可以使用 maven shade插件来构建jar并强制{{1}中的配置文件的连接}。像这样的片段对我有用:
META-INF/services/
答案 2 :(得分:0)
gradle 的等效解决方案是:
shadowJar{
mergeServiceFiles()
}