org.apache.xmlgraphics.image.loader.ImageException:不支持文件格式。找不到ImagePreloader

时间:2014-12-10 12:35:13

标签: java xslt apache-fop

我使用Apache FOP 1.1(Java)生成PDF文件。 它在Windows机器上工作正常但是当我使用Ubuntu机器时出现了这个错误

org.apache.xmlgraphics.image.loader.ImageException: The file format is not supported.  No ImagePreloader found
我有点困惑。请给我解决方案以解决这个问题。 谢谢

3 个答案:

答案 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()
}