2009-04-03 1 views
3

Возможно, это связано с проблемой класса, но на данный момент я действительно не уверен, так как я 't получить эту ошибку на некоторых машинах.«Класс драйвера SAX2 org.apache.crimson.parser.XMLReaderImpl не найден» при использовании Batik в webapp на Tomcat

Ошибка в верхней части стека равна SAX2 driver class org.apache.crimson.parser.XMLReaderImpl not found. Почему я должен получать эту ошибку только в некоторых средах, но не в других? Как я могу продолжить исследование и/или исправить это?

Среды:

  • Причал на Mac или PC == OK
  • Tomcat 5 или 6 на Mac == OK
  • Tomcat 5 или 6 на Win XP == ERROR
  • Tomcat 6 на CentOS == ERROR

Версии в POM:

  • батика: Батик: баночка: 1.5: компилировать
  • net.sf.saxon: Saxon: баночка: 8.7: компилировать
  • батик: батик-транскодер: банку: 1.6-1: компилировать
    • батика: батик мост: баночка: 1.6-1: компилировать
    • батика: батик-GVT: банка: 1.6-1: компилировать
    • батика: батик-АВТ-Util: банка: 1.6-1: компилировать
    • batik: batik-util: jar: 1.6-1: компилировать
    • батика: батик-гуй-UTIL: банка: 1.6-1: компилировать
    • батика: батик-Ext: банка: 1.6-1: компилировать
    • XML-API: xmlParserAPIs: банка: 2.0.2: составить
    • батика: батик-скрипт: баночка: 1.6-1: компилировать
    • батика: батик SVG-Дом: баночка: 1.6-1: компилировать
    • батика: батик-дом: баночка: 1.6-1: компиляция
    • batik: batik-css: jar: 1.6-1: compile
    • batik: batik-xml: jar: 1.6-1: compile
    • батика: Батик-анализатор: баночка: 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-framework: jar: 4.0: компиляция
+0

Привет, Мэтт. У меня проблема. Я удалил fop из/WEB-INF/lib и все еще получаю ошибку. Вы поняли какие-либо другие связанные проблемы? Ура! –

+0

Я не нашел никаких других связанных с этим проблем, которые я помню (три года назад). Я использовал Maven для упаковки своего приложения, поэтому, исключая артефакт fop в моем POM, Maven собирал упаковку этого артефакта. Если вы все еще получаете сообщение об ошибке, откройте WAR и проверьте этот артефакт и обязательно перезапустите сервер Tomcat. – Matt

+0

Я понял. Я не развертывал WAR-файл, и есть еще 2 JAR, включенных в 'fop',' batik-fop' и 'avalon'. Я удалил 'fop.jar', но не' batik-fop.jar'. –

ответ

6

Оказывается, что XML-графика Apache сама добавляет Crimson в classpath дважды. Однажды в транскодер Apache Batik и один раз в Apache FOP.

Поскольку библиотеки загружены в алфавитном порядке в Tomcat, FOP включал Crimson, сначала, но затем Batik также сделал то же самое.

Я исключил FOP из проекта POM и решил проблему с классом.

+0

Если вы попытаетесь удалить файлы из папки/WEB-INF/lib, удалите батик 'batik-fop'. –

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

Это было полезно для работы плагина batik. \t \t \t \t \t \t org.codehaus.mojo \t \t \t \t батик-Maven-плагин \t \t \t \t 1,0-бета-1 \t \t \t \t <зависимостей> \t \t \t \t \t \t \t \t \t \t \t батик \t \t \t \t \t \t батик-транскодер \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 фат \t \t \t \t \t \t \t \t фат \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t

0

Это проблема версий JDK. Found here:

  • Некоторые JDK уже включают в себя crimson LIB и отлично работает на девелоперской машине;
  • Но у некоторых JDK нет этой библиотеки на машинах пользователя и ошибки;

Используйте следующие 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> 
Смежные вопросы