“包javax.xml.soap在模块java.xml.ws中声明,它不在模块图中”
所以我在Working Soap客户端示例中获取了SOAP示例,将其放入SOAPClientSAAJ.java
文件中,并尝试编译它(Debian上的Openjdk 9):
t@h ~/javatest> javac SOAPClientSAAJ.java SOAPClientSAAJ.java:1: error: package javax.xml.soap is not visible import javax.xml.soap.*; ^ (package javax.xml.soap is declared in module java.xml.ws, which is not in the module graph) 1 error
谷歌搜索后,我发现编译和运行为
t@h ~/javatest> javac --add-modules java.xml.ws SOAPClientSAAJ.java t@h ~/javatest> java --add-modules java.xml.ws SOAPClientSAAJ
作品。 有关一般背景,请参阅此video: https : //www.youtube.com/watch?v = y8bpKYDrF5I&t = 20m17s
现在,问题:
- 编译器不应该自动添加模块java.xml.ws吗? (因为它显然知道它是必需的)这是javax.xml.soap中的一个错误吗?
- 为什么我的手册页中没有记录–add-modules选项? (Debian中的openjdk 9)
- 我应该在.java文件中写什么来自动添加java.xml.ws模块?
这是新的Java 9模块的结果 。 javax.xml.soap
包实际上是一个Java EE包 ,因此现在不可见。 当前的解决方法是使用--add-modules
,如您所做,或模块化您的代码 。
模块化您的代码需要将其重组为模块,并包括指定您正在使用的模块的module-info.java
文件。 在您的情况下,指定java.se.ee
将允许访问所有EE模块。