Spring boot项目启动报错 javax.VirtualServerName()Ljava/lang/String

阅读: 评论:0

Spring boot项目启动报错 javax.VirtualServerName()Ljava/lang/String

Spring boot项目启动报错 javax.VirtualServerName()Ljava/lang/String

报错

在idea工具内,开始一段时间启动无问题,有一次突然启动springboot报如下错误,可是install成jar启动正常。
启动环境如下:
tomcat版本8.5.15
jdk版本1.8.0_91

urrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[/user]]at port(FutureTask.java:122)at (FutureTask.java:192)at org.ContainerBase.startInternal(ContainerBase.java:939)at org.StandardHost.startInternal(StandardHost.java:872)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.ContainerBase$StartChild.call(ContainerBase.java:1419)at org.ContainerBase$StartChild.call(ContainerBase.java:1409)at urrent.FutureTask.run(FutureTask.java:266)at urrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at urrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[/user]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)... 6 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Failed to start component [Pipeline[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[/user]]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.StandardContext.startInternal(StandardContext.java:5117)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.authenticator.NonLoginAuthenticator[/user]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.StandardPipeline.startInternal(StandardPipeline.java:182)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 8 common frames omitted
Caused by: java.lang.NoSuchMethodError: javax.VirtualServerName()Ljava/lang/String;at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1141)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 10 common frames omitted
2023-11-13 10:25:38.993 [TID: N/A] [Tomcat-startStop-1] ERROR o.ContainerBase -A child container failed during start
urrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[/user]]at port(FutureTask.java:122)at (FutureTask.java:192)at org.ContainerBase.startInternal(ContainerBase.java:939)at org.StandardHost.startInternal(StandardHost.java:872)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.ContainerBase$StartChild.call(ContainerBase.java:1419)at org.ContainerBase$StartChild.call(ContainerBase.java:1409)at urrent.FutureTask.run(FutureTask.java:266)at urrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at urrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[/user]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)... 6 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Failed to start component [Pipeline[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[/user]]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.StandardContext.startInternal(StandardContext.java:5117)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.authenticator.NonLoginAuthenticator[/user]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.StandardPipeline.startInternal(StandardPipeline.java:182)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 8 common frames omitted
Caused by: java.lang.NoSuchMethodError: javax.VirtualServerName()Ljava/lang/String;at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1141)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 10 common frames omitted
2023-11-13 10:25:38.994 [TID: N/A] [main] ERROR o.ContainerBase -A child container failed during start
urrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]at port(FutureTask.java:122)at (FutureTask.java:192)at org.ContainerBase.startInternal(ContainerBase.java:939)at org.StandardEngine.startInternal(StandardEngine.java:262)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.StandardService.startInternal(StandardService.java:422)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.StandardServer.startInternal(StandardServer.java:793)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.startup.Tomcat.start(Tomcat.java:344)at org.at.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:99)at org.at.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:84)at org.TomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:554)at org.EmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:179)at org.t.ateEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164)at org.t.Refresh(EmbeddedWebApplicationContext.java:134)at t.fresh(AbstractApplicationContext.java:537)at org.t.fresh(EmbeddedWebApplicationContext.java:122)at org.springframework.fresh(SpringApplication.java:693)at org.springframework.freshContext(SpringApplication.java:360)at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)testApp.main(UserApp.java:24)flect.NativeMethodAccessorImpl.invoke0(Native Method)flect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)flect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at flect.Method.invoke(Method.java:498)at cution.CommandLineWrapper.main(CommandLineWrapper.java:64)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.ContainerBase$StartChild.call(ContainerBase.java:1419)at org.ContainerBase$StartChild.call(ContainerBase.java:1409)at urrent.FutureTask.run(FutureTask.java:266)at urrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at urrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: A child container failed during startat org.ContainerBase.startInternal(ContainerBase.java:947)at org.StandardHost.startInternal(StandardHost.java:872)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6 common frames omitted
2023-11-13 10:25:38.994 [TID: N/A] [main] ERROR o.ContainerBase -A child container failed during start
urrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]at port(FutureTask.java:122)at (FutureTask.java:192)at org.ContainerBase.startInternal(ContainerBase.java:939)at org.StandardEngine.startInternal(StandardEngine.java:262)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.StandardService.startInternal(StandardService.java:422)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.StandardServer.startInternal(StandardServer.java:793)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.startup.Tomcat.start(Tomcat.java:344)at org.at.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:99)at org.at.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:84)at org.TomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:554)at org.EmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:179)at org.t.ateEmbeddedServletContainer(EmbeddedWebApplicationContext.java:164)at org.t.Refresh(EmbeddedWebApplicationContext.java:134)at t.fresh(AbstractApplicationContext.java:537)at org.t.fresh(EmbeddedWebApplicationContext.java:122)at org.springframework.fresh(SpringApplication.java:693)at org.springframework.freshContext(SpringApplication.java:360)at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)testApp.main(UserApp.java:24)flect.NativeMethodAccessorImpl.invoke0(Native Method)flect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)flect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at flect.Method.invoke(Method.java:498)at cution.CommandLineWrapper.main(CommandLineWrapper.java:64)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)at org.ContainerBase$StartChild.call(ContainerBase.java:1419)at org.ContainerBase$StartChild.call(ContainerBase.java:1409)at urrent.FutureTask.run(FutureTask.java:266)at urrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at urrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: A child container failed during startat org.ContainerBase.startInternal(ContainerBase.java:947)at org.StandardHost.startInternal(StandardHost.java:872)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6 common frames omitted

问题分析

Round1 分析

提取关键报错信息如下:

Caused by: java.lang.NoSuchMethodError: javax.VirtualServerName()Ljava/lang/String;

一般情况下发下NoSuchMethodError错误:大多数情况只有两种

1、jar缺失

2、jar冲突

于是点进报错代码,发现存在。Debug时,getVirtualServerName为红色
判定问题为jar冲突,于是进入maven准备去掉多余jar,发现只有一个,甚至去掉后,还是报同样的问题。

Round2 怀疑

这个时候开始怀疑jar冲突方向排查是否正确,甚至产生疑惑。

Round3 切换版本

借鉴使用其他项目时,发现tomcat版本为9 jdk一样,开始怀疑tomcat版本会冲突,这个时候的想法其实已经走偏了,走向不太理智的猜错。因为如果是版本冲突,最开始就会报错。
切换tomcat版本为8.5.43。启动虽然报错但总会发现了曙光:

***************************
APPLICATION FAILED TO START
***************************Description:An attempt was made to call the method javax.VirtualServerName()Ljava/lang/String; but it does not exist. Its class, javax.servlet.ServletContext, is available from the following locations:jar:file:/F:/work/lib/javax.servlet.jar!/javax/servlet/ServletContext.classjar:file:/G://doc/maven/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar!/javax/servlet/ServletContext.classjar:file:/G://doc/maven/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.43/tomcat-embed-core-8.5.43.jar!/javax/servlet/ServletContext.classIt was loaded from the following location:file:/F:/ideawork/lib/javax.servlet.jarAction:Correct the classpath of your application so that it contains a single, compatible version of javax.servlet.ServletContext

发现关键错误,因为tomcat版本的问题导致输出错误形式的内容不同,导致未发现关键信息:

报错确定是因为多个servlet-api.jar冲突导致,最初猜想正确。tomcat与jdk对应版本如下:

Servlet规格JSP规范EL规格WebSocket规范JASPIC规格Apache Tomcat版本最新发行版本支持的Java版本
4.02.33.01.11.19.0.x9.0.278及更高版本
3.12.33.01.11.18.5.x8.5.477及更高版本
3.12.33.01.1不适用8.0.x(已取代)8.0.53(已取代)7及更高版本
3.02.22.21.1不适用7.0.x7.0.966及更高版本 (WebSocket为7及更高版本)
2.52.12.1不适用不适用6.0.x(已归档)6.0.53(已归档)5及更高版本
2.42.0不适用不适用不适用5.5.x(已存档)5.5.36(存档)1.4及更高版本
2.31.2不适用不适用不适用4.1.x(已归档)4.1.40(已归档)1.3及更高版本
2.21.1不适用不适用不适用3.3.x(已存档)3.3.2(已存档)1.1及更高版本

解决问题

去除多余jar,保留一个,启动成功。

总结

理智分析问题。

昆山玉碎凤凰叫,芙蓉泣露香兰笑。

本文发布于:2024-02-03 04:29:40,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170690578048655.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:报错   项目   javax   boot   Spring
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23