java - 如何修复JDK11 Tomcat9 Spring Application上的JAVAX运行时错误

标签 java spring maven docker tomcat

在 Tomcat9 上启动我的应用程序时遇到的具体错误。 Spring 版:5.1.5.RELEASE:

严重:配置类 [org.springframework.web.context.request.RequestContextListener] 的应用程序监听器时出错 java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceRef

关于这个错误有多个答案都建议添加 maven 依赖项。我添加了这些依赖项:

POM.xml

我的构建路径:

enter image description here

WebServiceRef 类位于包资源管理器中:

enter image description here

在 Tomcat9 上启动应用程序时,控制台会显示此错误。这是更多的堆栈跟踪: enter image description here

严重:配置类 [org.springframework.web.context.request.RequestContextListener] 的应用程序监听器时出错 java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceRef 在 org.apache.catalina.core.DefaultInstanceManager.populateAnnotationsCache(DefaultInstanceManager.java:303) ...更多的东西.... java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)

任何帮助或建议将不胜感激!

更新 1: 下面是一些 .jar 文件,它们被复制到 WEB-INF/lib 下的最终 .war 构建中。 4 个新的 maven 依赖项及其版本在这里,但也有可能重复的 .jar 文件。

enter image description here

更新 2: 将jaws-api jar 直接复制到我的Tomcat Classpath 中解决了运行时错误...所以应用程序现在正在启动,但是在实际部署.war 文件时我该如何克服这个问题?

enter image description here

最佳答案

这个问题归结为 Docker Desktop (Windows) 干扰了 Tomcat,特别是 Tomcat 的管理端口 8006,这迫使我更改端口号以允许 Tomcat 启动(从 8006 到例如 8007)。我曾经有一个旧的 Tomcat 容器,当我的计算机通过 Docker Desktop 启动时可能已经启动了,而我没有意识到这一点。

假设您的 pom.xml 具有必要的依赖项,已完成修复问题的步骤。

  1. 停止 Docker 桌面
  2. 使用最新的 JDK11 build并根据需要更新 JAVA_HOME
  3. 将默认的 Tomcat 管理服务器端口恢复为 8006
  4. 重新发布/重启 Tomcat 服务器

我认为在大多数情况下,此问题将按照 here 的说明解决。使用所需的依赖项更新 pom.xml。就我而言,这完全是环境问题,出于某种原因,Docker Desktop 阻止了 Tomcat 在运行时访问 jaws-api-2.3.1.jar 文件。 Tomcat 无法访问此 .jar 文件已通过我在上述问题中的“更新 2”得到确认。

我的 pom.xml 最终只需要以下项目: enter image description here

关于java - 如何修复JDK11 Tomcat9 Spring Application上的JAVAX运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55346431/

相关文章:

java - Spring 不使用 mongo 自定义转换器

java - 由 org.springframework.beans.factory.BeanCreationException 引起的成功安装 maven 的 Tomcat war 部署错误

java - 如何将 UTF-8 字符转换为 ISO Latin 1?

java - 将 Jersey/Jackson 配置为不使用 @XmlElement 字段注释进行 JSON 字段命名

java - hibernate 抛出 "deleted object would be re-saved by cascade (remove deleted object from associations)"

git - 是否有自动增加 Maven 版本的好方法

java - 如何将maven版本设置为Javadoc中的@version标签?

java - 如何让JTextPane水平滚动

java - Spring 集成 : SMTP server

java - 桌面应用程序和服务器之间的套接字通信