Java 10: замена для конфликта java.xml.ws - PullRequest
0 голосов
/ 17 мая 2018

Я должен использовать java.xml.ws* компоненты в моем проекте, но, поскольку он устарел и будет удален в ближайшее время, я хочу использовать замену для этих компонентов.Поэтому я добавил эту зависимость в файл pom моего проекта:

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-ri</artifactId>
    <version>2.3.0</version>
    <type>pom</type>
</dependency>

Это конфигурация моего модуля:

module x.y.z {
    requires kotlin.stdlib;
    requires spring.boot;
    requires spring.boot.autoconfigure;
    requires spring.context;
    requires cxf.core;
    requires cxf.rt.frontend.jaxws;
    requires java.xml.ws;
}

Но есть ошибка:

enter image description here

Что это значит и как это исправить, чтобы я мог использовать свою зависимость выше вместо java.xml.ws от jdk?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Просто используйте Java 11 :) Там нет модуля javax.xml.ws, поэтому нет конфликта.

Что касается Java 10, самый простой обходной путь - изменить область действия jaxws-ri на runtime:

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-ri</artifactId>
    <version>2.3.0</version>
    <scope>runtime</scope>
</dependency>
0 голосов
/ 17 мая 2018

Добавляя requires java.xml.ws, вы сообщаете модульной системе, что зависите от устаревшего модуля Java EE java.xml.ws , который он затем разрешит и сделает доступным.В то же время, кажется, что на пути к модулю находится модуль с тем же именем.(Может быть, JAR извлечен jaxws-ri ?)

Хотя, если подумать, я бы ожидал сообщения компилятора, жалующегося на дубликаты модулей ... Похоже,Ошибка (компилятор или среда выполнения?) исходит из IDE.Что произойдет, если вы запустите сборку с Maven?

В любом случае, если вы хотите начать с Java 11, вы можете попробовать.Модули Java EE удалены, поэтому нет возможности вмешательства модуля платформы.Я не уверен, возможно ли добавить java. * модуль к пути модуля, хотя.

Если это не так или вы предпочитаете придерживаться Java 10, вы должнывзгляните на обновляемые модули и --upgrade-module-path опция .Таким образом, вы можете использовать JAR, которые предоставляют API JAX WS, для замены модуля платформы.

...