idea spring boot java maven 依赖重复报错解决
依赖重复报错
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1220)
The following method did not exist:
javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
The method’s class, javax.servlet.ServletContext, is available from the following locations:
jar:file:/C:/Users/TANXZ/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar!/javax/servlet/ServletContext.class
jar:file:/C:/Users/TANXZ/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.29/tomcat-embed-core-9.0.29.jar!/javax/servlet/ServletContext.class
It was loaded from the following location:
file:/C:/Users/TANXZ/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of javax.servlet.ServletContext
分析:
一般报错信息如上,编译不报错,是在运行的时候报错。
从上面看是由于多个依赖 同时包含 ServletContext.class 所致。
包含该类的jar文件分别是 servlet-api-2.3.jar 和 tomcat-embed-core-9.0.29.jar
我们需要这里要排除 servlet-api-2.3.jar
有了这些信息就够了,下面看看如何解决。
解决:
1、打开项目依赖关系图
2、查找依赖
ctrl+F 然后键盘输入查找依赖名称(这里查servlet-api-2.3.jar)
3、追溯项目依赖
查找是哪些依赖引入了servlet-api-2.3.jar,通过点击箭头,往上追溯,一直到我们自己的依赖
4、排除依赖
例如我这里往上找,发现是my-mq项目,所以就在 依赖这个项目下面把servlet-api-2.3排除掉
<dependency>
<groupId>${project-groupId}</groupId>
<artifactId>my-mq</artifactId>
<version>${project-version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
5、重新编译启动即可
还没有评论,来说两句吧...