java.lang.NoClassDefFoundError : javax/xml/soap/SOAPException 异常

新手上路,请多包涵

我已经使用 Spring 创建了一个 Web 服务。在我的嵌入式 tomcat 服务器上运行时它工作正常。但是,当我将其打包为 JAR 文件并使用 java -jar 命令运行时,我收到此异常。

我的服务发送一个简单的 soap 请求,服务器响应是:

  "exception": "java.lang.NoClassDefFoundError",
    "message": "javax/xml/soap/SOAPException",

这就是我在 Postman 中得到的回应。

我可以在哪里寻找问题的任何想法。

原文由 grangos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
1 个回答

JavaSE 8 包含包 java.xml.soap

JavaSE 9 将包 javax.xml.soap 移动到模块 java.xml.ws

与 JEE 共享的模块(如 java.xml.ws )包含在 JavaSE 9 中,但是

- 已弃用 以从未来版本的 JavaSE 中删除,并且

- 不在默认模块路径上

一个快速的解决方法是

- 使用 JRE 8 运行 jar: $MY_JRE8_HOME/bin/java -jar my.jar ,或

- 为 JRE 9 添加一个模块: java --add-modules java.xml.ws -jar my.jar

从长远来看,使用诸如 java.xml.ws 之类的模块的 JavaSE 项目必须像其他库一样显式包含该模块。

请参阅 https://stackoverflow.com/a/46359097

请参阅 JDK 9 迁移指南:默认情况下未解析与 JEE 共享的模块

(在 https://spring.io/guides/gs/producing-web-service/ 复制了 NoClassDefError 和压缩 SOAP web 服务项目的解决方法)

原文由 user9712582 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题