当前位置: 首页 > 面试题库 >

“在模块java.xml.ws中声明了包javax.xml.soap,该模块不在模块图中”

梁丘德寿
2023-03-14
问题内容

因此,我在WorkingSoap客户端示例中使用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 9模块的结果。该javax.xml.soap软件包实际上是Java
EE软件包
,因此现在不可见。当前的解决方法是要么使用--add- modules,要么对您的代码进行模块化。

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



 类似资料:
  • 因此,我在工作SOAP客户机示例中使用了SOAP示例,将其放入一个文件,并尝试编译它(Debian上的Openjdk 9): 在谷歌搜索了一些之后,我发现编译和运行 作品。请参阅此视频了解一般背景:https://www.youtube.com/watch?v=y8bpKYDrF5I 现在,问题: 编译器不应该自动添加java模块吗。xml。ws?(因为它显然知道需要它)这是javax中的一个bu

  • 问题内容: 我有一个使用Java Webstart技术的项目。我决定将Java版本从8升级到9。但是,在编译时遇到以下错误: 我试图将其包含到类路径中,但仍然存在相同的问题。 问题答案: 看起来默认情况下,类路径上的代码未解析 java.jnlp (非常类似于Java EE模块 )。解决的办法是用明确添加(两者并接受参数)。 JEP 261:模块系统 或此博客文章中讨论了此选项。

  • 我有一个使用JavaWebStart技术的项目。我决定将Java版本从8升级到9。但是,我在编译时遇到了以下错误: 我试图包括到类路径,但仍然存在相同的问题。

  • 我们即将从java8迁移到java9,在我们的代码中我们使用的是soap,因此我需要告诉eclipse使用java.xml进行编译。ws模块。 在第一步中,我不想模块化项目(即添加module-info.java)。相反,我想将每个依赖项保留在未命名的模块中,因此我需要另一种方法将java.xml.ws模块添加到eclipse java编译器中(希望通过使用--add模块=java.xml.ws但

  • use 声明可以将一个完整的路径绑定到一个新的名字,从而更容易访问。 // 将 `deeply::nested::function` 路径绑定到 `other_function`。 use deeply::nested::function as other_function; fn function() { println!("called `function()`"); } mod de