tomcat加载jar包顺序
概述:项目使用springMVC,serviceImpl注入的一个bean无法找到,究其原因是无法找到日志类。其实在spring的配置文件中配置了bean。而且程序代码在其他人的机子上运行不报错。我这边抱错:类找不到apache.common.log.logFactory类。tomcat中部署的应用的lib文件中存在common-logging.jar包。我很纳闷,纠结为什么存在类,却找不到类呢?
问题的原因:原来我把用到的2个jar包扔到了jdk的lib文件夹。tomcat启动的时候,就会报错。jdk加载刚才扔进去的jar包的时候,无法找到common-logging.jar包。ps:jdk中没有扔common-logging.jar包。删除jdk的lib文件夹中的2个jar包,运行项目运行ok了。
总结:tomcat加载jar包的时候,是有顺序的。这是我在网上发现的,挺靠谱的,mark一下
当我们启动一个tomcat的服务的时候,jar包和claess文件是是以怎么样的顺序被加载进来的?
加载顺序:
1. $java_home/lib 目录下的java核心api
2. $java_home/lib/ext 目录下的java扩展jar包
3. java -classpath/-Djava.class.path所指的目录下的类与jar包
4. $CATALINA_HOME/common目录下按照文件夹的顺序从上往下依次加载
5. $CATALINA_HOME/server目录下按照文件夹的顺序从上往下依次加载
6. $CATALINA_BASE/shared目录下按照文件夹的顺序从上往下依次加载
7. 我们的项目路径/WEB-INF/classes下的class文件
8. 我们的项目路径/WEB-INF/lib下的jar文件
在同一个文件夹下,jar包是按顺序从上到下依次加载
tomcat的jar包加载顺序从8起发生了改变,不再像之前按照字母顺序,先加载的生效。而8之后,该用别的方式,该方式导致不同操作系统结果不同,虽然两者都用的8,而我是mac,它是linux。。。当时看到那篇博客就觉得有坑,没想到坑来的这么快。
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
· Windows 提权-UAC 绕过
2020-11-25 xheditor编辑器自动上传外链图片及QQ截图等(升级支持webp格式)
2017-11-25 Module ngx_http_v2_module
2017-11-25 nginx如何启用对HTTP2的支持 | nginx如何验证HTTP2是否已启用
2014-11-25 Vector HashMap List 存取数据速度
2013-11-25 javax.mail 遇到501 mail from address must be same as authorization user 的問題