конфликт в зависимостях с использованием Maven для сторонней библиотеки

#java #maven #dom #dependencies #xerces

#java #maven #dom #зависимости #xerces

Вопрос:

Я использую Maven в своем проекте, и у меня есть сторонняя библиотека, которая использует Xerces. В моем проекте есть несколько других модулей Maven, которые имеют в своих зависимостях некоторые другие библиотеки XML. Итак, моя проблема в том, что когда я использую эту стороннюю библиотеку в зависимом проекте maven, она работает нормально. И когда я использую его в модуле maven в своем проекте, он генерирует некоторые исключения.

 org.w3c.dom.ls.LSException: unknown protocol: c
    at com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl.writeToURI(DOMSerializerImpl.java:1010)
    at generators.Generator.setConf(Generator.java:1567)
 

Когда я отлаживал оба проекта, я заметил, что во втором он создает экземпляр DOMSerializerImpl класса form com.sun.org.apache.xml.internal.serialize package, а в первом используется org.apache.xml.serialize package . Несмотря на то, что в моих pom-файлах обоих проектов указаны одни и те же зависимости.

Зависимости этой библиотеки этой стороны:

     <dependency>
        <groupId>xml-resolver</groupId>
        <artifactId>xml-resolver</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>xalan</groupId>
        <artifactId>serializer</artifactId>
        <version>2.7.1</version>
    </dependency>
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>2.11.0</version>
    </dependency>
    <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesSamples</artifactId>
        <version>2.2.1</version>
    </dependency>
    <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>1.4.01</version>
    </dependency>
 

Кто-нибудь может мне помочь?

Комментарии:

1. Что произойдет, если вы просто используете встроенные библиотеки Xerces?

2. Я не использую Xerces в своем проекте, но он используется этой библиотекой, от которой я завишу. И, если я создаю проект, используя только его и с их зависимостями (включая Xerces), выполнение проходит без каких-либо исключений.

3. Если ваша сторонняя библиотека была создана с помощью maven, она должна использовать необходимые зависимости. Если это еще не сделано, вам нужно выяснить, какие именно версии он ожидает.

4. Можете ли вы предоставить дополнительную информацию о <зависимостях>, которые включены в ваш проект pom? Список, который вы включили, взят из стороннего pom, что полезно, но также необходимы сведения о вашем pom.

5. попробуйте выполнить «mvn help: effective-pom» и посмотрите на зависимости там. что-нибудь странное? Также «зависимость mvn: дерево» помогает выяснить, откуда берется материал (я думаю, вы знаете, в каких банках находится класс?). обычно выигрывает зависимость, которая ближе всего к вашему модулю. Цель depedency: tree обычно указывает, какой из них был выбран в пользу другого.