找不到SOAPConnectionFactory的类定义

时间:2018-08-17 17:57:18

标签: java intellij-idea

我正在使用模块在Java 9(jdk 9.0.4)中从Java 8重建应用程序。这些模块之一需要对我们的服务器进行SOAP调用,以检查各种服务是否正在运行,然后通过电子邮件报告这些服务的状态。

我知道SOAP库在Java 9中已被弃用,但尚未删除。我在适当的module-info中将java.xml.ws模块声明为要求:

module services {
    exports com.nams.hyperion.services;

    requires configurations;
    requires java.xml.ws;
}

它可以编译,但是在尝试运行项目时出现错误:java.lang.NoClassDefFoundError: javax/xml/soap/SOAPConnectionFactory

scf = SOAPConnectionFactory.newInstance(); <-- error here
conn = scf.createConnection();
mf = MessageFactory.newInstance();
msg = mf.createMessage();

我尝试使用--add-modules java.xml.ws编译器选项,但是并不能解决问题。我的Java安装没有此模块吗?我有什么选择?我已经在Maven周围摸索了一下,寻找单独的发行版,但还没有发现任何东西。

1 个答案:

答案 0 :(得分:0)

我找到了可以使用的Maven发行版:https://search.maven.org/artifact/com.sun.xml.ws/rt-jdk9/2.3.0/jar

但是,module-info文件向我发出警告,提示我的模块从2个相同名称的源中读取java.xml.ws。但是项目运行了,这对我来说现在很重要。稍后,我将解决如何处理歧义,如果可以的话,请更新此答案。

更新: 我通过从模块的依赖项中删除jar文件,但将其保留在Maven的依赖项列表中,解决了歧义。