Java ClassLoad Confuse
Contents
目录 start
目录 end|2020-04-29 11:57|
类加载导致的迷惑
记录一次因Jar包冲突导致的类加载问题
参考: 为什么SpringBoot的 jar 可以直接运行?
参考: 重新看待Jar包冲突问题及解决方案
参考: jar包冲突与inode
主题
- Java 类加载
- Linux inode
- Jenkins Maven package
解决方案
- 借助 Maven Helper 插件尽量避免Maven中依赖的冲突 maven-enforcer-plugin 插件 配合extra-enforcer-rules工具
- 或者 使用脚本等工具分析出 不同jar包里 限定名一致的类
场景
- SpringBoot项目 本身已经依赖了servlet3.1 因二方依赖被动引入了 servlet 2.5 版本
- 上线途中项目启动失败,抛出 NoSuchMethodError 可知加载了低版本的 servlet
- 经过分析可知依赖冲突导致,但是测试在未经排除依赖冲突时又做了重新上线,项目竟正常启动,因此分析底层原因
项目依赖
mvn dependency:tree -Dverbose -Dincludes=javax.servlet:
|
|
Author Kuangcp
LastMod 2020-04-29