解决 An attempt was made to call a method that does not exist. 问题详解

news/2024/9/23 5:17:40/

哈喽大家好,我是阿Q。今天在开发代码的过程中,由于手抖,不知道引入了什么包依赖,导致项目启动一直报错,特写本文来记录下解决问题的经过。

文章目录

    • 问题描述
      • 报错信息如下
      • 报错描述
    • 解决方法
    • 总结

有想赚点外块|技术交流的朋友,欢迎来撩

问题描述

报错信息如下

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.classjar:file:/E:/.m2/repository/jakarta/servlet/jakarta.servlet-api/4.0.4/jakarta.servlet-api-4.0.4.jar!/javax/servlet/ServletContext.classThe 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.jarAction: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.classjar: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这个插件来轻松解决,妈妈再也不用担心我的学习了😃。


http://www.ppmy.cn/news/440765.html

相关文章

OpenCV项目开发实战--旋转矩阵到欧拉角的代码实现

文末附基于Python和C++两种方式实现的测试代码下载链接 在这篇文章中,我将分享将 33 旋转矩阵转换为欧拉角的代码,反之亦然。 3D 旋转矩阵可以让你的头旋转。我知道这是一个糟糕的双关语,但事实有时会非常双关语! 旋转矩阵具有三个自由度,数学家们发挥了他们的创造性自由…

python爬虫进行AES解密遇到的问题

1、TypeError: Object type <class ‘str’> cannot be passed to C code 报错如下&#xff1a; File "C:\Python311\Lib\site-packages\Crypto\Util\_raw_api.py", line 143, in c_uint8_ptrraise TypeError("Object type %s cannot be passed to C cod…

更新windows补丁时一直卡在搜索更新

在微软下载好安装补丁Windows8.1-KB2999226-x64后&#xff0c;双击时一直停留在“正在此计算机上搜索”界面。 解决方案&#xff1a; 1.将windows 自动更新设置为&#xff1a;“从不检查更新” 。 2.关闭杀毒软件--360安全卫士 3.打开你下载的补丁&#xff0c;这时打开后一般可…

战网一直显示“正在等待另一项安装或更新”解决方法

战网一直显示“正在等待另一项安装或更新”解决方法 参考文章&#xff1a; &#xff08;1&#xff09;战网一直显示“正在等待另一项安装或更新”解决方法 &#xff08;2&#xff09;https://www.cnblogs.com/123e/p/5693013.html 备忘一下。

关闭谷歌更新提示“若要接收后续 google chrome 更新,您需使用 windows 10或更高版本”

关闭谷歌更新提示“若要接收后续 google chrome 更新,您需使用 windows 10或更高版本” 操作说明&#xff1a; 新建一个记事本文件&#xff1b;打开记事本文件&#xff0c;复制下面这段代码&#xff0c;粘贴其中&#xff0c;保存关闭。 Windows Registry Editor Version 5.00…

如何关闭“若要接收后续 google chrome 更新,您需使用 windows 10 或更高版本”

在Windows7使用Google Chrome浏览器的读者最近一打开Chrome 浏览器就会弹出更新警告&#xff0c;“若要接收后续 google chrome 更新,您需使用 windows 10 或更高版本”&#xff0c;有强迫症的我终于找到了解决办法&#xff0c;分享给大家&#xff1a; 新建一个记事本文件&…

【战网】如果直接使用国服战网客户端登录亚服

找到你的战网文件夹Battle.net 里面有Battle.net Launcher.exe这个启动文件。 你也右键查看战网快捷方式的目标&#xff0c;找到这个文件的位置。 启动cmd或powershell 输入 ."./Battle.net Launcher.exe" --setregionTW登录台湾服务器节点。 登陆账号前&#xff0…

战网一直显示 正在等待另一项安装或更新 解决方法

今天更新战网的时候发现战网一直显示“正在等待另一项安装或更新”&#xff0c;进度条卡着不动。 经过多次尝试&#xff0c;终于解决。如果你碰到了相同的问题&#xff0c;可以按以下步骤尝试解决&#xff1a; 1. 关闭战网客户端 2. 打开任务管理器&#xff0c;结束“agent.exe…