【问题标题】:"SAX2 driver class org.apache.crimson.parser.XMLReaderImpl not found" when using Batik in a webapp on Tomcat“未找到 SAX2 驱动程序类 org.apache.crimson.parser.XMLReaderImpl”在 Tomcat 上的 web 应用程序中使用 Batik
【发布时间】:2010-10-17 09:17:27
【问题描述】:

这可能与类路径问题有关,但我现在真的不确定,因为我在某些机器上没有收到此错误。

堆栈顶部的错误是SAX2 driver class org.apache.crimson.parser.XMLReaderImpl not found。为什么我只会在某些环境中收到此错误,而在其他环境中不会?我该如何进一步调查和/或解决此问题?

环境:

  • Mac 或 PC 上的 Jetty == 正常
  • Mac 上的 Tomcat 5 或 6 == 正常
  • Win XP 上的 Tomcat 5 或 6 == 错误
  • CentOS 上的 Tomcat 6 == 错误

POM 中的版本:

  • 蜡染:蜡染:jar:1.5:编译
  • net.sf.saxon:saxon:jar:8.7:compile
  • batik:batik-transcoder:jar:1.6-1:compile
    • 蜡染:蜡染桥:罐子:1.6-1:编译
    • batik:batik-gvt:jar:1.6-1:compile
    • batik:batik-awt-util:jar:1.6-1:compile
    • batik:batik-util:jar:1.6-1:compile
    • batik:batik-gui-util:jar:1.6-1:compile
    • batik:batik-ext:jar:1.6-1:compile
    • xml-apis:xmlParserAPIs:jar:2.0.2:compile
    • 蜡染:蜡染脚本:jar:1.6-1:编译
    • batik:batik-svg-dom:jar:1.6-1:compile
    • batik:batik-dom:jar:1.6-1:compile
    • batik:batik-css:jar:1.6-1:compile
    • batik:batik-xml:jar:1.6-1:compile
    • batik:batik-parser:jar:1.6-1:compile
    • fop:fop:jar:0.20.5:compile
    • batik:batik-1.5-fop:jar:0.20-5:compile
    • xml-apis:xml-apis:jar:1.0.b2:compile
    • xalan:xalan:jar:2.4.1:编译
    • xerces:xercesImpl:jar:2.2.1:compile
    • avalon-framework:avalon-framework:jar:4.0:compile

【问题讨论】:

  • 嗨,马特。我有这个问题。我已经从 /WEB-INF/lib 中删除了 fop,但仍然出现错误。你有没有发现任何其他相关的问题?干杯!
  • 我没有发现我记得的任何其他相关问题(三年前)。我使用 Maven 来打包我的应用程序,因此在我的 POM 中排除 fop 工件使 Maven 无法打包该工件。如果您仍然收到错误,请打开您的 WAR 并检查该工件并确保重新启动 Tomcat 服务器。
  • 我想通了。我没有部署 WAR 文件,fopbatik-fopavalon 中还包含其他 2 个 JAR。我删除了fop.jar,但没有删除batik-fop.jar

标签: java tomcat svg classpath batik


【解决方案1】:

谢谢,这很有用。

在 Win 7 / Tomcat 6 上有完全相同的“缺少深红色”的东西。通过添加深红色库使其工作,但性能很差,非常慢。单个图像转码大约需要 10-15 秒。终于按照您的描述通过删除 FOP 解决了这个问题,现在它真的很快。在我的 POM 中是这样的:

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-transcoder</artifactId>
        <version>1.6-1</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>fop</artifactId>
                <groupId>fop</groupId>
            </exclusion>
        </exclusions>
    </dependency>

【讨论】:

  • 这对于让蜡染插件也能正常工作很有用。 org.codehaus.mojobatik-maven-plugin1.0-beta-1batik batik-transcoder1.6-1fopfop
【解决方案2】:

事实证明,Apache XML Graphics 本身两次将 Crimson 添加到类路径中。一次在 Apache Batik 转码器中,一次在 Apache FOP 中。

由于库在 Tomcat 中按字母顺序加载,FOP 首先包括 Crimson,但随后 Batik 也这样做了。

我从项目 POM 中排除了 FOP,并且已经解决了类路径问题。

【讨论】:

  • 如果尝试从 /WEB-INF/lib 文件夹中删除文件,请同时删除 batik-fop jar。
【解决方案3】:

这是一个JDK版本问题。 Found here:

  • 一些 JDK 已经包含 crimson lib 并且在开发者机器上运行良好;
  • 但是有些JDK在用户的机器上没有那个lib并抛出错误;

使用以下 maven 配置:

<dependency>
    <groupId>batik</groupId>
    <artifactId>batik-transcoder</artifactId>
    <version>1.6-1</version>
</dependency>
<dependency>
    <groupId>crimson</groupId>
    <artifactId>crimson</artifactId>
    <version>1.1.3</version>
</dependency>

【讨论】:

    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多