zoukankan      html  css  js  c++  java
  • 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。。。当时看到那篇博客就觉得有坑,没想到坑来的这么快。

  • 相关阅读:
    [GL]行星运行1
    一个图的带权邻接表存储结构的应用
    [GDAL]3.影像金字塔构建
    [GDAL]1.GDAL1.8.1编译与第一个程序
    [GDAL]2.读取栅格和矢量数据
    C#迭代器
    GoogleEarth缓存机制探索
    AE开发三维的不足!
    [GDAL]4.影像的读取和显示
    [STL学习]1.概述
  • 原文地址:https://www.cnblogs.com/interdrp/p/15601117.html
Copyright © 2011-2022 走看看