所以我在Working Soap client example处获取了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
的工作原理。有关一般背景,请参阅此视频:https://www.youtube.com/watch?v=y8bpKYDrF5I&t=20m17s
现在,问题:
答案 0 :(得分:15)
这是new Java 9 modules的结果。 javax.xml.soap
包是actually a Java EE package,因此现在不可见。目前的解决方法是使用--add-modules
,或者使用modularize your code。
模块化您的代码需要将其重组为模块,并包括一个module-info.java
文件,用于指定您正在使用的模块。在您的情况下,指定java.se.ee
将允许访问所有EE模块。