«Класс драйвера SAX2 org.apache.crimson.parser.XMLReaderImpl не найден» при использовании Batik в веб-приложении на Tomcat - PullRequest
3 голосов
/ 03 апреля 2009

Возможно, это связано с проблемой пути к классам, но я действительно не уверен в этом, поскольку на некоторых машинах я не получаю эту ошибку.

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

Среда:

  • Jetty на Mac или ПК == ОК
  • Tomcat 5 или 6 на Mac == ОК
  • Tomcat 5 или 6 в Win XP == ОШИБКА
  • Tomcat 6 в CentOS == ОШИБКА

Версии в POM:

  • батика: Батик: баночка: 1.5: компилировать
  • net.sf.saxon: Saxon: баночка: 8.7: компилировать * +1027 *
  • батик: батик-транскодер: баночка: 1.6-1: компилировать
    • батика: Батик мост: баночка: 1.6-1: компилировать * * тысяча тридцать один
    • батик: батик GVT: баночка: 1.6-1: компилировать
    • батик: батик-АВТ-Util: баночка: 1.6-1: компилировать
    • батик: батик-Util: баночка: 1.6-1: компилировать
    • батик: батик-гуй-Util: баночка: 1.6-1: компилировать
    • батик: батик внутр: баночка: 1.6-1: компилировать
    • XML-API: xmlParserAPIs: баночка: 2.0.2: компилировать
    • батик: батик-скрипт: баночка: 1.6-1: компилировать
    • батик: батик SVG-дом: баночка: 1.6-1: компилировать
    • батик: батик дом: баночка: 1.6-1: компилировать
    • батика: Батик-CSS: баночка: 1.6-1: компилировать * +1051 *
    • батик: батик-XML: баночка: 1.6-1: компилировать
    • батик: батик-парсер: баночка: 1.6-1: компилировать
    • фат: фат: баночка: 0.20.5: компилировать
    • XML-API: XML-API: баночка: 1.0.b2: компилировать
    • Xalan: Xalan: баночка: 2.4.1: компилировать
    • Xerces: xercesImpl: баночка: 2.2.1: компилировать
    • Авалон-основа: Авалон-основа: баночка: 4,0: компилировать

Ответы [ 3 ]

8 голосов
/ 10 ноября 2010

Спасибо, это было очень полезно.

На Win 7 / Tomcat 6 была та же самая «недостающая малиновая» вещь. Получилось, добавив малиновые библиотеки, но производительность была плохой, очень медленной. Для транскодирования одного изображения потребовалось около 10-15 секунд. Наконец-то решили проблему, удалив FOP, как вы описали, и теперь это действительно быстро. Вот как у меня в ПОМе:

    <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>
6 голосов
/ 03 апреля 2009

Оказывается, что Apache XML Graphics сама добавляет Crimson в путь к классам, дважды. Один раз в транскодере Apache Batik и один раз в Apache FOP.

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

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

0 голосов
/ 14 января 2018

Это проблема версий JDK. Найдено здесь :

  • Некоторые 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>
...