servlet依赖冲突引起的报错:An attempt was made to call a method that does not exist.

最近在学习微服务的时候启动eureka的时候发生报错导致启动失败,具体报错如下:

2023-10-31 18:54:04.193 ERROR 12616 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

*************************** APPLICATION FAILED TO START *************************** 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:1355) The following method did not exist: 'java.lang.String javax.servlet.ServletContext.getVirtualServerName()' The method's class, javax.servlet.ServletContext, is available from the following locations: jar:file:/C:/Users/86138/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/javax/servlet/ServletContext.class jar:file:/C:/Users/86138/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.41/tomcat-embed-core-9.0.41.jar!/javax/servlet/ServletContext.class The class hierarchy was loaded from the following locations: javax.servlet.ServletContext: file:/C:/Users/86138/.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

【1】报错原因简单说就是不同依赖之间的servlet版本不同。

程序尝试调用了一个不存在的方法。具体来说,出现了对 javax.servlet.ServletContext.getVirtualServerName() 方法的调用,而该方法实际上并不存在。

错误提示中还给出了相关的类加载信息,显示了 javax.servlet.ServletContext 类在两个地方可用,分别是 servlet-api-2.5.jartomcat-embed-core-9.0.41.jar 这两个 JAR 包中。由于存在多个不兼容的版本,导致了调用失败。

要解决这个问题,你需要确保应用程序的类路径中只包含一个兼容的版本的 javax.servlet.ServletContext 类。

【2】我在网上看到一个这样的解决方案:https://blog.csdn.net/weixin_40796433/article/details/111881916

这样并不是不可以,但是如果项目重新加载的话仍然还需要进行调整。

【3】更好的方法是保证项目只包含一个特定的 JAR 包

可以在 pom.xml 文件中声明依赖,并排除掉不需要的传递性依赖。

<dependency><groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId><version>2.5</version> <scope>provided</scope> 
</dependency>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/137189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 中的 foreach 的用法

本文将介绍 MyBatis 中的 <foreach> 标签的灵活应用&#xff0c;并结合财经领域的数据处理场景&#xff0c;阐述其在财经系统开发中的重要性和应用价值。 MyBatis中的<foreach>标签简介 MyBatis 是一个优秀的持久层框架&#xff0c;它简化了数据库操作的流程&…

黑洞路由的几种应用场景

第一种在内网中产生环路&#xff1a; 这种核心交换机上肯定写一条默认路由 0.0.0.0 0 10.0.0.1 出口路由要写一条192.168.0.0 16 10.0.0.2 如果出口路由访问一条不存在的内网网段&#xff0c;又或者访问的那台终端停机了&#xff0c;那就会产生三层环路&#xff0c;数据包在…

QT:tcpSocket 报错The proxy type is invalid for this operation

调用connectToHost时会先检查代理情况。Qt 程序默认使用系统的代理设置会导致这个问题导致&#xff0c;只要关闭系统的代理设置就可以解决这个问题&#xff1a; &#xff08;1&#xff09;添加头文件&#xff1a; #include <QNetworkProxy> &#xff08;2&#xff09;添加…

sam9x60 uart 中断列表

节选自邮件列表 All the mail mirrored from lore.kernel.org help / color / mirror / Atom feed [PATCHv3 0/2] update at91 usart compatible for sam9x60 2023-07-18 6:57 Durai Manickam KR 0 siblings, 0 replies; 11 messages in thread From: Durai Manickam KR 2…

Sentinel网关限流

背景 在微服务架构下&#xff0c;每个服务的性能都不同&#xff0c;为避免出现流量洪峰将服务冲垮&#xff0c;需要依赖限流工具来保护服务的稳定性。sentinel是阿里提供的限流工具&#xff0c;社区活跃&#xff0c;功能也很全面&#xff0c;包含实时监控、流控、熔断等功能。…

vue实战——登录过期【详解】

登录过期逻辑 现在普遍的登录权限校验方式是JWT &#xff08;json web token&#xff09;&#xff0c;当登录成功时&#xff0c;前端页面会获得一个 token &#xff0c;每个 token 都设置了过期时间&#xff0c;通过解析 token 即可判断出 token 是否过期。 token 过期&#x…

实现智慧工地的高效建筑管理,数据分析起着关键作用!

智慧工地是利用物联网、云计算、大数据等技术&#xff0c;实现对建筑工地实时监测、管理和控制的一种新型建筑管理方式。 智慧工地架构&#xff1a; 1、终端层&#xff1a;充分利用物联网技术、移动应用、智能硬件设备提高现场管控能力。通过RFID、传感器、摄像头、手机等终端…

很多个pdf怎么合并在一起?

很多个pdf怎么合并在一起&#xff1f;作为一个办公室的伙伴&#xff0c;对于PDF格式肯定不会陌生。它强大的功能为我们的工作提供了许多便利。由于PDF文件格式的稳定性和安全性较高&#xff0c;我们通常在工作或学习中使用它来传输文件&#xff0c;很多人都喜欢将办公文件都做成…

NVM安装node后提示没有对应npm包(即:无法将“npm”项识别为 cmdlet、函数、脚本文件)

背景 windows11 node版本降低到v12.22.12后&#xff0c;执行&#xff1a;nvm -v npm -v npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果 包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 …

java项目调用python进程

问题描述 某一功能是通过python项目实现的&#xff0c;但是主项目是java项目&#xff0c;此时希望在java项目中调用python进程。 方法 import lombok.extern.slf4j.Slf4j;import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.…

数据结构(C语言) 实验-栈与字符串

删除子串 字符串采用带头结点的链表存储&#xff0c;设计算法函数void delstring(linkstring s, int i,int len) 在字符串s中删除从第i个位置开始&#xff0c;长度为len的子串。 void delstring(linkstring s, int i, int len) {linkstring p,q,r;int cnt 1;p s->next;wh…

Python 解决tkinter的Menu菜单command参数与bind方法共用触发事件

用普通函数作为媒介&#xff0c;使用event_generate()方法模拟触发bind()事件来创建一个模拟的event对象&#xff0c;并将其传递给绑定的事件处理函数。 运行结果 示例代码 import tkinter as tk# 菜单事件 def menuEvent(event):print(event.x, event.y)label.config(textf鼠…

OC-编译错误

明明包含了头文件&#xff0c;但是还是显示未知的类型 可能这个头文件被某个宏包住了 #if defined(__cplusplus) 在 C 代码中包含了一个 C 的头文件会显示这个错误“the util lib only be used in c”&#xff0c;此时用 #if defined(__cplusplus) #endif 包一下就行了&…

IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何合并多次的本地提交进行 Push

本心、输入输出、结果 文章目录 IntelliJ IDEA 2023.2.1 (Ultimate Edition) 版本 Git 如何合并多次的本地提交进行 Push前言为什么需要把多次本地提交合并合并提交的 2 种形式:事中合并、事后合并事中合并事后合并:支持拆分为多组提交弘扬爱国精神IntelliJ IDEA 2023.2.1 (U…

在uniapp和微信小程序中onshow和onload的区别

在uni-app框架中&#xff0c;是两个页面级别的生命周期函数 onLoad&#xff1a;页面加载时调用&#xff0c;可以获取参数&#xff0c;通过options&#xff0c;但是只调用一次&#xff0c;onLoad"适合进行页面初始化操作” onshow&#xff1a; "onShow"生命周期…

Android Mvp案例解析

目录 后端数据接口数据格式 App客户端布局逻辑主界面布局 M&#xff08;Model&#xff09;V&#xff08;View&#xff09;P&#xff08;Presenter&#xff09;OkhttpRetrofitRxJava网络http请求 Mvp架构-初学者MVP架构的契约者 后端数据接口 接口地址&#xff1a;https://apis.…

flink1.18.0 自适应调度器 资源弹性缩放 flink帮你决定并行度

jobmanager.scheduler Elastic Scaling | Apache Flink 配置文件修改并重启flink后,webui上会显示调整并行度的按钮,他可以自己调整,你也可以通过webUI手动调整: 点击 之后: 调整完成后:

机器学习——朴素贝叶斯

目录 一、贝叶斯方法 背景知识 贝叶斯公式 二、朴素贝叶斯原理 判别模型和生成模型 1&#xff0e;朴素贝叶斯法是典型的生成学习方法 2&#xff0e;朴素贝叶斯法的基本假设是条件独立性 3&#xff0e;朴素贝叶斯法利用贝叶斯定理与学到的联合概率模型进行分类预测 用于文…

BERT和ChatGPT简单对比

OpenAI发布了第一个版本的GPT&#xff08;Generative Pretrained Transformer&#xff09;模型在2018年6月。 谷歌的BERT模型&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是在2018年10月发布的。 BERT和ChatGPT都是由人工智能研究实验室…

FindMy网络帮助您找到电动车

随着科技的发展&#xff0c;我们的生活变得越来越智能化。而现在&#xff0c;这项技术已经深入到了我们的出行方式中。如果你是一位电动车主&#xff0c;那么你可能会遇到一个常见的问题&#xff1a;忘记你的电动车停在了哪里。这种情况在日常生活中时有发生&#xff0c;而现在…