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。。。当时看到那篇博客就觉得有坑,没想到坑来的这么快。

  • 相关阅读:
    cocos2d-x于android在call to OpenGL ES API with no current context
    C# 6.0 (C# vNext) 的新功能:Exception-Handling Improvements
    既然知识都会遗忘,我们为什么要学习?
    进程(线程)间通信与网络通信的联系与比较
    网络通信要素与总结
    android和IOS长连接区别
    TCP socket如何判断连接断开
    application/json 四种常见的 POST 提交数据方式
    TCP和流
    比勤奋更重要的,是深度思考的能力
  • 原文地址:https://www.cnblogs.com/interdrp/p/15601117.html
Copyright © 2011-2022 走看看