JDK 11 с JAXB и JAXWS работает с Eclipse, но не с IntelliJ - PullRequest
0 голосов
/ 16 мая 2019

Я конвертирую приложение, которое использует JAXB и JAX-WS, из JDK 8 в JDK 11. Код запускается, когда я использую Eclipse IDE, но точно такой же код не работает с IntelliJ IDEA

Я создал проект Maven с использованием Eclipse и IntelliJ IDEA. Проблемы поиска рабочей комбинации ресурсов Maven были описаны в другом вопросе. JDK 11 с проблемами JAXB и JAXWS Код создается без ошибок в обеих средах. Я пытался создать проект IntelliJ IDEA как проект Maven, а также стандартный проект IDEA

часть пом.хл

<dependency>
  <groupId>org.openjfx</groupId>
  <artifactId>javafx-controls</artifactId>
  <version>11.0.2</version>
</dependency>
<dependency>
  <groupId>org.openjfx</groupId>
  <artifactId>javafx-fxml</artifactId>
  <version>11.0.2</version>
</dependency>
<dependency>
  <groupId>org.glassfish.jaxb</groupId>
  <artifactId>jaxb-runtime</artifactId>
  <version>2.3.0</version>
</dependency>
<!-- JAXWS for Java 11 -->
<dependency>
  <groupId>com.sun.xml.ws</groupId>
  <artifactId>rt</artifactId>
  <version>2.3.1</version>
</dependency>

module-info.java

module org.openfx.gustfx {
    requires javafx.controls;
    requires javafx.fxml;
    requires transitive javafx.graphics;
    requires java.xml.bind;
    requires java.xml.ws;
    requires javax.jws;

    opens com.agile.ws.schema.common.v1.jaxws to javafx.fxml;
    opens org.openfx.gustfx to javafx.fxml;
    exports org.openfx.gustfx;
}

Когда код запускается из Eclipse, ошибок нет. Запуск этого же кода из IntelliJ IDE приводит к этой ошибке

java.lang.ClassNotFoundException: com.sun.xml.internal.ws.spi.ProviderImpl

Поиск по файлам jar подтверждает, что ProviderImpl.class теперь находится в com.sun.ws.spi, а не в com.sun.xml.internal.ws.spi. Это не вызывает проблемы с затмением, но IDEA сообщает ClassNotFoundException

Поэтому мой вопрос «Как затмение решает эту проблему, а IntelliJ - нет?»

1 Ответ

0 голосов
/ 25 мая 2019

С помощью Романа Шевченко из IntelliJ я решил эту проблему, используя следующие pom.xml

    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.3.2</version>
    </dependency>
    <dependency>
        <groupId>javax.jws</groupId>
        <artifactId>javax.jws-api</artifactId>
        <version>1.1</version>
    </dependency>

и module-info.java

requires java.xml.ws;
requires java.xml.bind;
requires javax.jws;
...