Java教程

springBoot启动报 `NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/Stri

本文主要是介绍springBoot启动报 `NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/Stri,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

springBoot启动报 NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;问题解决

  • 在项目的根目录下 查看是哪个包将serlet-api引入的 使用 mvn dependency:tree

image-20210409161533663

  • 将这个包排除掉
<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

这篇关于springBoot启动报 `NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/Stri的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!