【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

2023-07-20 09:14:21

  5a2585dded9b416fb4ea58637b42ed39.png

  Yan-英杰的主

悟已往之不谏 知来者之可追  

C++程序员,2024届电子信息研究生


目录

问题描述

报错信息如下

报错描述

解决方法

总结

【粉丝福利】

【文末送书】        

        目录:

        本书特色:


问题描述

        报错信息如下

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-apijakarta.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 Boot3.0王炸版本带来了很多新特性,值得我们深入学习

        推荐给大家哔站上动力节点王妈妈的springboot3教程,采用知识点配合项目案例的方式,可以让大家很轻松的掌握SpringBoot

        配套资料也非常全面,领取方式可看视频简介区~

        该视频博主是博主大学时候,一直跟的,质量完全有保障

点击这里快速学习
SpringBoot3入门到实战【动力节点】SpringBoot3从入门到项目实战-spring boot3通俗易懂高薪必备共计200条视频,包括:001-SpringBoot3课程导读、002-课程介绍、003-开发环境_bilibili等,UP主更多精彩视频,请关注UP账号。http://u3v.cn/69BVDN

【文末送书】
        

        抽取5位粉丝赠送视频配套SpringBoot3实体书籍~

        

        目录:

 章节介绍
        第一章:JDK关注的新特性
        第二章:掌握SpringBoot基础篇
        第三章:自动配置
        第四章:访问数据库
        第五章:说说web服务
        第六章:远程访问HttpExchange
        第七章:视图技术
        第八章:项目实战
        第九章:AOT与GraalVM

        本书特色:

        本书将带你学习掌握Java领域中盛名已久的SpringBoot框架,掌握最新SpringBoot3新特性:@HttpExchange声明式客户端,RFC7807、ProblemDetail,预编译AOT。并基于JDK17的新特性Java Record,Text Block , 密闭类等一网打尽。本书结合新特性,以实际项目需求入手,详解SpringBoot核心知识点, 突出Web应用痛点解决方案。先知识点后项目案例,让各位学习者快速轻松掌握SpringBoot。

更多推荐

[当人工智能遇上安全] 9.基于API序列和深度学习的恶意家族分类实例详解

您或许知道,作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个《当人工智能遇上安全》系列博客,详细介绍人工智能与安全相关的论文、实践,并分享各种案例,涉及恶意代码检测、恶意请求识别、入侵检测、对抗样本等等。只想更好地帮助初学者,更加成体系的分享新知识。该系列文

laravel 使用mpdf将html转化成pdf

安装方式composerrequirempdf/mpdf常用配置$defaultConfig=(new\Mpdf\Config\ConfigVariables())->getDefaults();//获取默认的字体包文件路径$fontDirs=$defaultConfig['fontDir'];$defaultFont

基于SpringBoot+Vue的MOBA类游戏攻略分享平台

1简介MOBA类游戏攻略分享平台,为用户随时随地查看游戏攻略信息提供了便捷的方法,更重要的是大大的简化了管理员管理MOBA类游戏攻略信息的方式方法,更提供了其他想要了解MOBA类游戏攻略信息及运作情况以及挑选方便快捷的可靠渠道。相比于传统游戏攻略管理方法,这样的电子信息管理更为简洁方便,在MOBA类游戏攻略维护信息反馈

软件测试面试题 —— 整理与解析(3)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。📡主页地址:【Austin_zhai】🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。💎声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢迎大家私信,有空必回。阅读目录1.接上回2.题目解析2.1请介

day14 02-Shell控制条件与循环详解

文章目录1.9.条件控制1.9.1.if条件语句-单分支1.9.2.if条件语句-多分支1.9.3.case1.10.循环1.10.1.for循环1.10.2.while循环1.9.条件控制1.9.1.if条件语句-单分支if-else语句,是非常简单,也是非常基础的条件语句。在Java中我们已经非常熟悉它的逻辑了,在

乒乓球廉价底板和套胶对比分析

手机最近没办法写微博,在火车上没事,折腾了下,升级后可以了,我近期又打了很多套胶,我还录了段粘拍的视频一会分享。这次我还是说几款底板和套胶的感受,最近买了dj200不带A底板,paliocc和银河cn2,套胶方面用的更多一一解读。首先说为什么买dj200底板,作为我这种低端用户来说,我认为dj200就是我的天花板,这个

前后端分离毕设项目之基于springboot+vue的笔记记录分享网站设计与实现(内含源码+文档+部署教程)

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌🍅由于篇幅限制,想要获取完整文章或者源码,或者代做,拉到文章底部即可看到个人VX。🍅2023年-2024年最新计算机毕业设计本科选题大全汇总感兴趣的可以先收藏

Docker 的使用

一、Docker的作用和优势软件集装箱化平台,可让开发者构建应用程序时,将它与环境一起打包到一个容器中,发布应用到任意平台中。能在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,如:Tomcat运行在一个Docker,MySQL运行在另外一个Docker,两者可以运行在同一个服务器。1.1

QT实现qq登录

1、登录界面头文件#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<QMessageBox>#include<QDebug>#include"second.h"//第二个界面头文件#include"third.h"//注册界面头文件#

go语言常用标准库(Time)

go语言常用标准库(Time)1、Time时间和日期是我们编程中经常会用到的,本文主要介绍了Go语言内置的time包的基本用法。1.1.1.time包time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。1.1.2.时间类型time.Time类型表示时间。我们可以通过time.Now()函数获取当前的时间对

stable diffusion的微调和lora微调代码版本

目前业界主流的sd训练基本都是基于diffusers和ldm的,这是huggingface的训练库,后者是stabilityai在compvis等机构的基础上完善的,我目前工作上推理一般采用webui架构,训练采用diffusers,因此需要把webui的ckpt或者safetensors转成huggingface形式

热文推荐