idea spring boot java maven 依赖重复报错解决

迷南。 2023-01-01 03:59 201阅读 0赞

依赖重复报错

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

  1. org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1220)

The following method did not exist:

  1. javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;

The method’s class, javax.servlet.ServletContext, is available from the following locations:

  1. jar:file:/C:/Users/TANXZ/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar!/javax/servlet/ServletContext.class
  2. 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:

  1. 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

有了这些信息就够了,下面看看如何解决。

解决:

20201231142557306.png

1、打开项目依赖关系图

20201231141410768.png

20201231142601840.png

2、查找依赖

ctrl+F 然后键盘输入查找依赖名称(这里查servlet-api-2.3.jar)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW4xMDc4NzY_size_16_color_FFFFFF_t_70

20201231142604350.png

3、追溯项目依赖

查找是哪些依赖引入了servlet-api-2.3.jar,通过点击箭头,往上追溯,一直到我们自己的依赖

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW4xMDc4NzY_size_16_color_FFFFFF_t_70 1

2020123114260694.png

4、排除依赖

例如我这里往上找,发现是my-mq项目,所以就在 依赖这个项目下面把servlet-api-2.3排除掉

  1. <dependency>
  2. <groupId>${project-groupId}</groupId>
  3. <artifactId>my-mq</artifactId>
  4. <version>${project-version}</version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>javax.servlet</groupId>
  8. <artifactId>servlet-api</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>

2020123114261528.png

5、重新编译启动即可

发表评论

表情:
评论列表 (有 0 条评论,201人围观)

还没有评论,来说两句吧...

相关阅读