java - "package javax.xml.soap is declared in module java.xml.ws, which is not in the module graph"

标签 java

所以我在 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

现在,问题:

  1. 编译器不应该自动添加模块 java.xml.ws 吗? (因为它显然知道它是必需的)这是 javax.xml.soap 中的错误吗?
  2. 为什么我的手册页中没有记录 --add-modules 选项? (Debian 中的 openjdk 9)
  3. 我应该在 .java 文件中写什么来自动添加 java.xml.ws 模块?

最佳答案

这是 new Java 9 modules 的结果. javax.xml.soap 包是 actually a Java EE package ,所以现在不可见。当前的解决方法是像您所做的那样使用--add-modules,或者使用modularize your code。 .

模块化您的代码需要将其重组为模块,并包括一个指定您正在使用的模块的 module-info.java 文件。在您的情况下,指定 java.se.ee 将允许访问所有 EE 模块。

关于java - "package javax.xml.soap is declared in module java.xml.ws, which is not in the module graph",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46084302/

相关文章:

java - 如何在 Java 独立应用程序中读取资源文件

java - 折线在模拟器上崩溃

java - Selenide:Allure 报告中缺少 @Step 注释

java - thread.join() 的线程完成时间

java - java机器人的问题。鼠标点击不起作用

java - 我们如何才能将数组访问到映射器中?

java - 如何在 Android 中使用 SQLite 从微调器中根据选定的月份和年份从列中获取值?

java - 我如何优化这个逻辑?

java - onTouchEvent 不能@Override

java - 如何通过 java.lang.reflect.Type 创建实例