Spring解决依赖版本不一致报错问题

 更新时间:2023年07月21日 08:53:43   作者:Yan-英杰  
许多同学经常会遇到依赖版本不一致导致代码报错,所以这篇文章就给大家详细介绍一下Spring解决依赖版本不一致报错问题,需要的朋友跟着小编一起来看看吧

问题描述

报错信息如下

Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
    io.undertow.websockets.jsr.Bootstrap.handleDeployment(Bootstrap.java:84)
​
The following method did not exist:
​
    javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader;
​
The method's class, javax.servlet.ServletContext, is available from the following locations:
​
    jar:file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/javax/servlet/ServletContext.class
​
    jar:file:/E:/.m2/repository/jakarta/servlet/jakarta.servlet-api/4.0.4/jakarta.servlet-api-4.0.4.jar!/javax/servlet/ServletContext.class
​
​
The class hierarchy was loaded from the following locations:
​
    javax.servlet.ServletContext: file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of javax.servlet.ServletContext

报错描述

试图从以下位置去调用一个不存在的方法:

io.undertow.websockets.jsr.Bootstrap.handleDeployment(Bootstrap.java:84);
javax.servlet.ServletContext.getClassLoader()Ljava/lang/ClassLoader;

该方法不存在;

该方法的类javax.servlet.ServletContext可从以下位置获得:

 jar:file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/javax/servlet/ServletContext.class
​
 jar:file:/E:/.m2/repository/jakarta/servlet/jakarta.servlet-api/4.0.4/jakarta.servlet-api-4.0.4.jar!/javax/servlet/ServletContext.class

类层次结构是从以下位置加载的:

javax.servlet.ServletContext: file:/E:/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar

更正应用程序的类路径,使其包含一个单独的兼容版本的javax.servlet.ServletContext。

上边的解释说人话就是servlet-api和jakarta.servlet-api下的 ServletContext.class 冲突了,需要修改一下版本依赖。

解决方法

首先打开IDEA的 setting 设置

然后选择 Plugins 插件,下载Maven Helper插件,如果安装之后不生效,可以重启一下 IDEA

最后打开 pom.xml 文件,选择 Dependency Analyzer 切换页,选择 All Dependencies as Tree 选项,然后搜索 javax,然后右键选择 Exclude 排除重复依赖就可以了。

点完之后会发现 pom.xml 文件中会出现如下代码

<dependency>
​
  <groupId>com.xxx.kas.swagger</groupId>
​
  <artifactId>swagger-spring-mvc-core</artifactId>
​
  <version>1.0-SNAPSHOT</version>
​
  <exclusions>
​
 <exclusion>
​
   <artifactId>servlet-api</artifactId>
​
   <groupId>javax.servlet</groupId>
​
 </exclusion>
​
  </exclusions>
​
</dependency>

如果排除之后依然报错,可以选择上图的Jump To Source跳转到对应的仓库内将对应版本删除即可。

刷新下依赖,发现正常启动了,搞定。

总结

以后再遇到这种包依赖冲突的问题都可以使用Maven Helper这个插件来轻松解决,妈妈再也不用担心我的学习了。

到此这篇关于Spring解决依赖版本不一致报错问题的文章就介绍到这了,更多相关Spring版本不一致内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 反射调用静态方法的简单实例

    Java 反射调用静态方法的简单实例

    下面小编就为大家带来一篇Java 反射调用静态方法的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Java 递归查询部门树形结构数据的实践

    Java 递归查询部门树形结构数据的实践

    本文主要介绍了Java 递归查询部门树形结构数据的实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • SpringSecurity角色权限控制(SpringBoot+SpringSecurity+JWT)

    SpringSecurity角色权限控制(SpringBoot+SpringSecurity+JWT)

    本文主要介绍了SpringSecurity角色权限控制(SpringBoot+SpringSecurity+JWT),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Spring中三种常见Bean的初始化参数机制你了解吗

    Spring中三种常见Bean的初始化参数机制你了解吗

    在Spring框架中,Bean的实例化与初始化是一个复杂的过程,本文我们主要来聊一聊它的常见的三种机制:InitializingBean接口、BeanDefinitionRegistryPostProcessor接口和EnvironmentAware接口,感兴趣的小伙伴可以了解下
    2023-11-11
  • Spring Boot实现文件上传示例代码

    Spring Boot实现文件上传示例代码

    本篇文章主要介绍了Spring Boot实现文件上传示例代码,可以实现单文件和多文件的上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Java中的动态和静态编译实例详解

    Java中的动态和静态编译实例详解

    这篇文章主要介绍了Java中的动态和静态编译实例详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • java实现多人聊天室可视化

    java实现多人聊天室可视化

    这篇文章主要为大家详细介绍了java实现多人聊天室可视化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 深入理解Java设计模式之组合模式

    深入理解Java设计模式之组合模式

    这篇文章主要介绍了JAVA设计模式之组合模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2021-11-11
  • SpringBoot实现垂直分片的六种策略

    SpringBoot实现垂直分片的六种策略

    随着业务规模的不断扩大,单一数据库架构往往难以满足日益增长的数据量和访问压力,作为解决方案之一,垂直分片通过将不同业务模块的数据分散到不同的数据库或实例中,本文将介绍在SpringBoot环境下实现垂直分片的六种策略,需要的朋友可以参考下
    2025-06-06
  • Java 超详细讲解数据结构中的堆的应用

    Java 超详细讲解数据结构中的堆的应用

    堆首先是一个完全二叉树,堆分为小根堆和大根堆。小根堆,所有结点的左右子节点都不小于根节点;大根堆,所有结点的左右子节点都不大于根节点。优先级队列(priorityQueue)底层就是一个小根堆
    2022-04-04

最新评论