在Tomcat上的webapp中使用Batik时“找不到SAX2驱动程序类org.apache.crimson.parser.XMLReaderImpl”

时间:2009-04-03 14:46:59

标签: java tomcat svg classpath batik

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

堆栈顶部的错误是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中的版本:

  • 蜡染:蜡染:罐子:1.5:编译
  • net.sf.saxon:撒克逊:罐子:8.7:编译
  • 蜡染:蜡染转码器:罐:1.6-1:编译
    • 蜡染:蜡染桥:罐:1.6-1:编译
    • 蜡染:蜡染GVT:罐:1.6-1:编译
    • 蜡染:蜡染AWT-UTIL:罐:1.6-1:编译
    • 蜡染:蜡染UTIL:罐:1.6-1:编译
    • 蜡染:蜡染桂-UTIL:罐:1.6-1:编译
    • 蜡染:蜡染-EXT:罐:1.6-1:编译
    • XML的API:xmlParserAPIs:罐子:2.0.2:编译
    • 蜡染:蜡染脚本:罐:1.6-1:编译
    • 蜡染:蜡染SVG-DOM:罐:1.6-1:编译
    • 蜡染:蜡染DOM:罐:1.6-1:编译
    • 蜡染:蜡染CSS:罐:1.6-1:编译
    • 蜡染:蜡染XML:罐:1.6-1:编译
    • 蜡染:蜡染的解析器:罐:1.6-1:编译
    • FOP:FOP:罐子:0.20.5:编译
    • 蜡染:蜡染-1.5-FOP:罐:0.20-5:编译
    • XML的API:XML的API:罐:1.0.b2:编译
    • 的Xalan:Xalan的:罐:2.4.1:编译
    • 的xerces:xercesImpl:罐子:2.2.1:编译
    • Avalon的框架:Avalon的框架:罐:4.0:编译

3 个答案:

答案 0 :(得分:8)

谢谢,这非常有用。

在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>

答案 1 :(得分:6)

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

由于libs是在Tomcat中按字母顺序加载的,首先是FOP包括Crimson,但是Batik也是如此。

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

答案 2 :(得分:0)

这是一个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>