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

Mat*_*att 3 java svg tomcat 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 == ERROR

POM中的版本:

  • 蜡染:蜡染:罐子:1.5:编译
  • net.sf.saxon:撒克逊:罐子:8.7:编译
  • 蜡染:蜡染代码转换器中:jar: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:编译
    • 蜡染:蜡染脚本中:jar:1.6-1:编译
    • 蜡染:蜡染SVG-DOM中:jar:1.6-1:编译
    • 蜡染:蜡染DOM中:jar: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中:jar:1.0.b2:编译
    • xalan的:xalan的:坛子:2.4.1:编译
    • Xerces的:xercesImpl:罐子:2.2.1:编译
    • 阿瓦隆框架:阿瓦隆的框架中:jar:4.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>
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 6

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

由于libs是在Tomcat中按字母顺序加载的,所以FOP首先包括Crimson,但是Batik也做了同样的事情.

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