springBoot
启动报 NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
问题解决
- 在项目的根目录下 查看是哪个包将
serlet-api
引入的 使用mvn dependency:tree
- 将这个包排除掉
<dependency>
<groupId>com.atgui.crowd</groupId>
<artifactId>atcrowdfundig05-comon-util</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
- 问题分析
我的问题其实不是jar冲突,准备说是ServletContext
接口冲突 了。项目依赖了tomcat-embed-core-8.5.31.jar
已经有ServletContext
了,并且ServletContext
接口确确实实定义了getVirtualServerName
()方法,只不过jvm先加载了servelt-api
中的ServletContext
类,后来在加载tomcat-embed-core-8.5.31中的ServletContext
时发现它已经存在就不再加载了。
原文链接:https://blog.csdn.net/a785975139/article/details/80640425