2009-04-03 6 views
3

Dies ist möglicherweise mit einem Classpath-Problem verbunden, aber ich bin wirklich nicht sicher an diesem Punkt, da ich nicht bekomme diesen Fehler auf manchen Rechnern nicht."SAX2-Treiber-Klasse org.apache.crimson.parser.XMLReaderImpl nicht gefunden" bei Verwendung von Batik in einer Webapp auf Tomcat

Der Fehler an der Spitze des Stapels ist SAX2 driver class org.apache.crimson.parser.XMLReaderImpl not found. Warum bekomme ich diesen Fehler nur in einigen Umgebungen, aber nicht in anderen? Wie kann ich das weiter untersuchen und/oder beheben?

Umgebungen:

  • Anlegestelle auf Mac oder PC == OK
  • Tomcat 5 oder 6 auf Mac == OK
  • Tomcat 5 oder 6 auf Win XP == ERROR
  • Tomcat 6 auf CentOS == FEHLER

Versionen in der POM:

  • batik: batik: Glas: 1,5: kompilieren
  • net.sf.saxon: Saxon: Glas: 8,7: kompilieren
  • batik: batik-Transcoder: jar: 1.6-1: kompilieren
    • Batik: Batik-Brücke: jar: 1,6-1: kompilieren
    • Batik: Batik-gvt: jar: 1,6-1: Batik-aWT-util:
    • Batik kompilieren jar: 1,6-1: kompilieren
    • batik: batik-util: jar: 1.6-1: kompilieren
    • Batik: Batik-gui-util: jar: 1,6-1: kompilieren
    • Batik: Batik-ext: jar: 1,6-1: kompilieren
    • xml-apis: xmlParserAPIs: jar: 2.0.2: kompilieren
    • Batik: Batik-script: jar: 1,6-1: kompilieren
    • Batik: Batik-svg-dom: jar: 1,6-1: kompilieren
    • Batik: Batik-dom: jar: 1.6-1: Kompilieren
    • batik: batik-css: glas: 1.6-1: kompilieren
    • batik: batik-xml: glas: 1.6-1: kompilieren
    • Batik: Batik-Parser: jar: 1,6-1:
    • Geck kompilieren: Geck: jar: 0.20.5: Batik-1.5-Geck:
    • Batik kompilieren jar: 0,20-5: kompilieren
    • xml-apis: xml-apis: jar: 1.0.b2: kompilieren
    • xalan: xalan: jar: 2.4.1: kompilieren
    • xerces: xercesImpl: jar: 2.2.1: kompilieren
    • avalon-framework : avalon-framework: jar: 4.0: kompilieren
+0

Hallo, Matt. Ich habe dieses Problem. Ich habe fop aus/WEB-INF/lib entfernt und bekomme immer noch den Fehler. Hast du ein anderes verwandtes Problem herausgefunden? Prost! –

+0

Ich habe keine anderen verwandten Probleme gefunden, an die ich mich erinnere (vor drei Jahren). Ich benutzte Maven, um meine Anwendung zu verpacken, so dass Maven durch das Ausschließen des Fop-Artefakts in meinem POM davon abgehalten wurde, dieses Artefakt zu verpacken. Wenn Sie immer noch den Fehler erhalten, öffnen Sie Ihren WAR und prüfen Sie, ob das Artefakt vorhanden ist, und stellen Sie sicher, dass der Tomcat-Server neu gestartet wird. – Matt

+0

Ich habe es herausgefunden. Ich habe die WAR-Datei nicht bereitgestellt, und es gibt 2 weitere JARs, die in 'fop',' batik-fop' und 'avalon' enthalten sind. Ich entfernte 'fop.jar', aber nicht' batik-fop.jar'. –

Antwort

6

Es stellt sich heraus, dass Apache XML Graphics selbst Crimson dem Klassenpfad zweimal hinzufügt. Einmal im Apache Batik Transcoder und einmal in Apache FOP.

Da die Libs in Tomcat alphabetisch geladen sind, hat FOP zuerst Crimson geladen, aber dann hat Batik auch dasselbe gemacht.

Ich habe FOP aus dem Projekt POM ausgeschlossen und das Klassenpfadproblem gelöst.

+0

Wenn Sie versuchen, die Dateien aus dem Ordner/WEB-INF/lib zu entfernen, entfernen Sie auch die Datei "batik-fop". –

8

Danke, das war sehr nützlich.

Auf Win 7/Tomcat 6 hatte genau das gleiche "fehlende Purpur". Es funktionierte, indem die karminroten Bibliotheken hinzugefügt wurden, aber die Leistung war schlecht, sehr langsam. Es dauerte ungefähr 10-15 Sekunden für eine einzelne Bildtranscodierung. Schließlich löste das Problem durch Entfernen der FOP wie beschrieben, und jetzt ist es wirklich schnell. Dies ist, wie es in meinem POM ist:

<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> 
+0

Dies war nützlich, um Batik-Plugin funktioniert auch zu bekommen. \t \t \t \t \t \t org.codehaus.mojo \t \t \t \t Batik-Maven-Plugin \t \t \t \t 1,0-beta-1 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t batik \t \t \t \t \t \t batik-Transcoder \t \t \t \t \t \t 1.6-1 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t fop \t \t \t \t \t \t \t \t Geck \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t

0

Es ist ein JDK-Versions-Problem. Found here:

  • Einige JDK sind bereits crimson lib und arbeitet an Entwickler Maschine in Ordnung;
  • Aber einige JDK haben diese lib nicht auf den Maschinen des Benutzers und werfen Fehler;

Verwenden Sie die folgende Maven config:

<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> 
Verwandte Themen