在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依赖项。我添加了以下依赖项:
我的构建路径:
在包资源管理器中找到WebServiceRef
类:
在Tomcat9上启动应用程序时,在控制台中显示此错误。这是更多的堆栈跟踪:
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文件。
更新2: 直接将下颚API罐子复制到我的Tomcat类路径中解决了运行时错误...因此,该应用程序现在启动了,但是当实际部署.war文件时,我将如何克服这个问题?
答案 0 :(得分:2)
此问题归结为Docker桌面(Windows)干扰Tomcat,特别是Tomcat的管理端口 8006 ,这迫使我更改端口号以允许Tomcat启动(从 8006更改为例如8007 )。我在某个时间点有一个旧的Tomcat容器,当我通过Docker Desktop启动我的计算机时却没有意识到,这可能已经被触发。
假设您的pom.xml具有必要的依赖关系,则已完成纠正问题的步骤。
我认为在大多数情况下,通过here中所述的问题可以通过使用所需的依赖项更新pom.xml来解决。就我而言,这完全是环境问题,出于某种原因,Docker桌面阻止了Tomcat在运行时访问 jaws-api-2.3.1.jar 文件。通过上述问题中的“更新2”确认了Tomcat无法访问此.jar文件。
答案 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一起使用