idea启动服务报错Application run failed

现象是这样,在宝兰德部署报错: NoClassDefFoundError: org/apache/tomcat/util/codec/binary/Base64

本地启动报错:Application run failed:Failed to parse configuration class \*\*\*.WebApplication; nested exception is java.lang.IllegalStateException:Failed to introspect annotated methods on class org.springframework.boot.web.servlet.support.SpringBootServletInitializer

以及从Caused by : java.lang.ClassNotFOUNDeXCEPTION : JAVAX.SERVLET.

java.lang.ClassNotFoundException : Javax.servlet.ServletContext

下面是报错的部分截图

‌Maven中的scope元素用于定义依赖项的作用范围,它决定了依赖项在项目构建的不同阶段(如编译、测试、运行)的可用性。‌

Maven中的Scope类型及其用途

‌compile‌:这是默认值,表示被依赖包需要参与当前项目的编译、测试和运行阶段,通常会被包含在最终的打包文件中。例如,JUnit库通常使用compile范围,因为它需要在编译和运行时都可用‌12。

‌provided‌:这种范围的依赖项在编译和测试阶段可用,但在运行时不需要。通常用于服务器提供的库,如Servlet API,因为服务器已经提供了这些库,不需要在应用中再次包含‌23。

‌runtime‌:这种范围的依赖项在运行时可用,但不参与编译。适用于那些在编译时不需要但在运行时必须的库,如JDBC驱动。这种范围可以减少编译时间并避免不必要的依赖‌23。

‌test‌:这种范围的依赖项仅在测试阶段可用,不会被包含在最终的打包文件中。适用于测试框架和测试相关的库‌23。

‌system‌:这种范围的依赖项从本地系统路径获取,通常用于那些不在Maven仓库中的库。需要指定本地路径‌23。

‌import‌:这种范围用于POM继承,允许一个POM文件继承另一个POM文件中的依赖管理配置‌2。

Scope的使用场景和示例

‌compile‌:适用于所有阶段需要的库,如JUnit。

‌provided‌:适用于服务器提供的库,如Servlet API。

‌runtime‌:适用于运行时需要的库,如JDBC驱动。

‌test‌:适用于测试阶段的库,如JUnit测试框架。

‌system‌:适用于本地系统路径的库,如某些特定硬件相关的库。

‌import‌:适用于POM继承,简化依赖管理。

本地环境启动的修改scope

修改spring-boot-starter-tomcat的scope属性

将上面图片中的scope这行注释掉。然后刷新一些maven,就可以启动了。
这里是因为宝兰德打包的时候需要排除这个jar包,但是idea里面用的是tomcat,所以不能排除这个jar包。对于打包到宝兰德中间件的时候,需要这个中间件单独的jar包,需要用宝兰德的那个jar包来替换这个jar包。(也就是将这个包排除掉,然后再引入宝兰德的jar包。)

打包的时候要排除tomcat的一些包的依赖,但是没有去干净。对于引用的其它的jar包或者本地的maven项目要把jar包排除干净。

相关推荐
她的男孩几秒前
开放接口限流从 20 改到 200 还是每分钟 20 次:拆完防重放+幂等+限流,我找到 5 个静默失效的坑
java·后端·架构
天天被压力6 分钟前
【Python 量化取数指南 #13】Python 把行情落库:sqlite 一键存,回测随用随取
java·人工智能·python
天天被压力6 分钟前
【Python 量化取数指南 #14】Python 清洗行情数据:复权停牌对齐,回测不翻车
java·人工智能·python
独泪了无痕10 分钟前
开发利器Hutool之MapUtil的使用
java·后端
唐青枫14 分钟前
Java ThreadLocal 详解:从线程隔离到线程池实战,彻底避开脏数据与内存泄漏
java
T_Apollo14 分钟前
2.6 Java 11 版本新增特性和类
java
用户37215742613523 分钟前
如何使用 Java 创建 Excel 数据透视表
java
用户31268748772027 分钟前
JVM 内存结构全链路:堆、栈、方法区、元空间
java
IT枫斗者枫哥28 分钟前
Spring Boot导入返回409,为什么第一行还是入库了?
java·spring boot·后端
xiaoqiMikko28 分钟前
JVM 线上排查实战(五):升 JDK 17 后进程起不来,十几个老 GC 参数挨个实测(完结)
java·jvm