JRE 9 模块需要一个未找到的模块

JRE 9 module requires a module that was not found

当 运行 我的项目时,我收到错误消息:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.xml.soap not found, required by java.xml.ws

据我了解,java.xml.ws 是一个 JRE 模块,而 java.xml.soap 不是,基于 the documentation 中提供的列表。我启动程序的方式是:

java --upgrade-module-path c:/git/projectdir --add-modules java.xml.bind,java.xml.ws,java.xml.ws.annotation  -cp c:/git/projectdir/Uservice.jar com.gert.DynamicService "arg1" "arg2" "arg3"

当我尝试将 java.xml.soap 添加到添加模块时,它找不到模块。

我的问题是:

我正在使用 java 9.0.1

Is the java.xml.soap a JRE module?

不,这不是平台模块。 运行 java --list-modules 并且您不会在输出中看到 java.xml.soap

If java.xml.soap isn't a JRE module, why does the java.xml.ws module depend on a module that isn't in the JRE?

有两个 java.xml.ws 个模块。

第一个是平台模块,已弃用(您不应该使用它)。

第二个是一个独立的模块,作为 jaxws-api 部署到 Maven 中心(你应该使用这个模块)。

虽然这两个模块很相似,但也有许多不同之处。其中之一是独立 java.xml.ws 有自己的依赖项。例如。 java.xml.ws 依赖于 java.xml.soap,它也被部署到 Maven 中心(如 javax.xml.soap-api)。

Where to find the java.xml.soap module?

见上文。你可以在 Maven 中心找到它。如果您使用 Maven,它应该作为 jaxws-api.

的依赖项自动获取

我想,您的可升级文件夹 c:/git/projectdir 中缺少 java.xml.soap。您应该从 .m2\repository\javax\xml\soap\javax.xml.soap-api.

复制 jar