带有JAXB和JAXWS的JDK 11可与Eclipse一起使用,但不能与IntelliJ一起使用

时间:2019-05-16 04:14:49

标签: eclipse jaxb intellij-14

我正在将使用JAXB和JAX-WS的应用程序从JDK 8转换为JDK11。代码在我使用Eclipse IDE时运行,但是完全相同的代码在IntelliJ IDEA中失败了

我已经使用Eclipse和IntelliJ IDEA创建了一个Maven项目。在另一个问题中已经描述了找到Maven资源的有效组合的问题。 JDK 11 with JAXB and JAXWS problems 两种环境下的代码构建均无错误。我尝试将IntelliJ IDEA项目创建为Maven项目以及标准IDEA项目

pom.xl的一部分

<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中。这不会导致Eclipse出现问题,但是IDEA报告了ClassNotFoundException

因此,我的问题是:“ Eclipse如何解决IntelliJ不能解决的问题?”

1 个答案:

答案 0 :(得分:0)

在IntelliJ的Roman Shevchenko的帮助下,我已使用以下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;