如何修复JDK11 Tomcat9 Spring应用程序上的JAVAX运行时错误

时间:2019-03-25 21:08:13

标签: java spring maven docker tomcat

在Tomcat9上启动我的应用程序时遇到的特定错误。春季版本:5.1.5。发布:

SEVERE: Error configuring application listener of class [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

SEVERE: Error configuring application listener of class [org.springframework.web.context.request.RequestContextListener] java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceRef at org.apache.catalina.core.DefaultInstanceManager.populateAnnotationsCache(DefaultInstanceManager.java:303) ...more stuf.... java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)

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

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

enter image description here

更新2: 直接将下颚API罐子复制到我的Tomcat类路径中解决了运行时错误...因此,该应用程序现在启动了,但是当实际部署.war文件时,我将如何克服这个问题?

enter image description here

2 个答案:

答案 0 :(得分:2)

此问题归结为Docker桌面(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桌面阻止了Tomcat在运行时访问 jaws-api-2.3.1.jar 文件。通过上述问题中的“更新2”确认了Tomcat无法访问此.jar文件。

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

答案 1 :(得分:1)

尝试在pom.xml中使用此依赖项:

Error in if (Cl(x[i + 1]) > Op(x[i])) { : argument is of length zero

我刚刚尝试过,它可以与tomcat 9和spring 5.1.5一起使用