【问题标题】:"package javax.xml.soap is declared in module java.xml.ws, which is not in the module graph"“包 javax.xml.soap 在模块 java.xml.ws 中声明,它不在模块图中”
【发布时间】:2018-02-15 11:32:28
【问题描述】:

所以我将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模块?

【问题讨论】:

标签: java


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 2018-05-15
  • 2017-07-07
  • 2019-04-14
  • 2012-06-18
  • 1970-01-01
相关资源
最近更新 更多