`
nicegege
  • 浏览: 590650 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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包是按顺序从上到下依次加载

      由ClassLoader的双亲委托模式加载机制我们可以知道,假设两个包名和类名完全相同的class文件不再同一个jar包,如果一个class文件已经被加载java虚拟机里了,那么后面的相同的class文件就不会被加载了。

ps:做应用开发关心业务逻辑,很少关注java的底层原理,深刻感受到java开发没有那么容易,开发5年的java还是有很多不明白的,经常跳进各种java的坑。

分享到:
评论

相关推荐

    tomcat8改了jar加载顺序的踩坑记录

    Tomcat8相较于之前的版本,确实对JAR包的加载顺序进行了调整,这在某些情况下可能会导致开发者遇到意料之外的问题。本文将深入探讨这个问题,以及如何理解和解决因jar加载顺序改变而引发的错误。 首先,我们要明白...

    Tomcat启动顺序

    Tomcat的启动顺序涉及到多个层次的加载,从Bootstrap类开始,逐步加载系统配置、公共库、共享库以及Web应用程序。 【详细知识点】: 1. Bootstrap类: Tomcat的启动始于Bootstrap类,这是Tomcat服务器的主入口点...

    tomcat-memcached所需jar包

    标题暗示我们需要关注的是如何在Tomcat环境中集成和使用Memcached服务,这通常涉及到将特定的jar包添加到Tomcat的类路径中,以便应用程序能够利用Memcached的缓存功能。 【描述分析】 描述简单明了,再次强调了我们...

    Linux下Nginx+Memcached+Tomcat负载均衡集群服务搭建所需jar包

    通过添加特定的jar包(如做session共享所需jar包),可以实现Tomcat间的Session同步。 4. **负载均衡策略**: - **轮询(Round Robin)**:每个请求按顺序分配到不同的服务器。 - **权重轮询(Weighted Round ...

    Tomcat启动时类加载顺序

    ### Tomcat启动时类加载顺序详解 #### 一、引言 Apache Tomcat是一款开源的Servlet容器,主要用于部署Java Web应用程序。它支持最新的Servlet、JSP等规范,并且以其轻量级、简单易用的特点而受到开发者的青睐。在...

    spring boot 第三方jar包抽离方案

    在Spring Boot应用中,由于其内嵌的Tomcat服务器和众多的依赖库,通常会导致生成的jar包体积庞大。尤其当引入多个第三方组件后,jar包的大小可能会达到100MB甚至更大,这给产品的部署和升级带来了极大的不便。因此,...

    tomcat加载jar异常问题的分析与解决

    在实际操作中,结合项目实际部署情况和环境变量,逐一排查并解决上述提到的问题点,就能有效解决Tomcat加载JAR异常的问题。 需要注意的是,由于文档内容是通过OCR扫描得到的,可能存在个别字词的识别错误。因此,在...

    Tomcat加载顺序

    ### Tomcat加载顺序详解 Apache Tomcat作为一款广泛使用的开源Servlet容器,其类加载机制是理解和维护基于Tomcat的应用程序的重要部分。Tomcat的类加载器遵循特定的加载顺序,确保了不同应用间的隔离性和资源的正确...

    weblogic部署项目jar冲突解决

    在将一个已经在Tomcat上正常运行的应用迁移到WebLogic时,可能会遇到各种问题,其中最常见的是配置问题和JAR包冲突。 标题"weblogic部署项目jar冲突解决"指出的核心问题是JAR包冲突。这是因为不同的应用服务器可能...

    编写java程序jar包

    除此之外,jar包还可能包含资源文件(如图片、配置文件等)和相关的元数据,如清单文件(Manifest file),它定义了类加载顺序、主类(main class)等信息。 创建jar包的过程通常包括以下几个步骤: 1. **编写Java...

    Java 类在 Tomcat 中是如何加载的(过程分析)

    当Tomcat加载类时,它遵循以下顺序: - 使用Bootstrap类加载器尝试加载。 - 使用System类加载器尝试加载。 - 使用Webapp类加载器加载`WEB-INF/classes`下的类。 - 使用Webapp类加载器加载`WEB-INF/lib`中的jar...

    Tomcat7 核心包 catalina包源码

    《深入解析Tomcat7 Catalina核心包源码》 Tomcat作为开源的Java Servlet容器,是Web服务器领域的重要角色,其高效、轻量级的特性深受开发者喜爱。在Tomcat7版本中,Catalina是核心组件之一,负责处理HTTP请求和响应...

    websphere下部署CXF项目jar包冲突问题解决方式

    "websphere下部署CXF项目jar包冲突问题解决方式"这一主题聚焦于如何在IBM Websphere Application Server (WAS)中成功部署包含Apache CXF Web服务的WAR包,解决由于类加载导致的运行异常。 Apache CXF是一个流行的...

    使用JDBC连接数据库的各种jar包

    4. **引入jar包**: 将所需的JDBC驱动jar包添加到项目的类路径中。对于IDE如Eclipse、IntelliJ IDEA,可以通过配置构建路径或者模块依赖来添加。在命令行环境中,通常需要通过`java -cp`参数指定。 5. **建立连接**:...

    外部Jar包加载到可执行Jar或War包相关代码

    可执行Jar(如使用了`Main-Class`属性的Manifest文件)可以直接通过`java -jar`命令运行,而War包是Web应用的打包格式,通常部署在Servlet容器(如Tomcat)中运行。加载外部Jar到这两种类型的包中,需要考虑到它们...

    tomcat类加载器

    例如,可以通过修改`common.loader`、`shared.loader`和`context.loader`属性来改变类的加载顺序和来源。 在深入研究"DevLoader"之前,需要查看压缩包内的具体文件,例如org目录下可能包含与DevLoader相关的源代码...

    springMVC整合cxf所需的jar包

    - 避免类加载问题:如果在同一应用中同时使用Tomcat和其他服务器,可能需要调整类加载顺序,避免类冲突。 - 测试和调试:在整合过程中,使用日志记录和单元测试来确保每个组件都按预期工作。 以上就是关于...

    分jar包资料

    Tomcat提供了`-J`参数来指定包含预编译JSP的jar包,这样启动时会直接加载这些预编译的Servlet,而不是在首次请求时才编译。这个过程涉及到JSP生命周期和Tomcat的配置。 最后,"servlet过滤器 - phpzxh - 博客园"这...

    servlet-api-3.0.jar包

    3. **微容器**:Servlet 3.0允许在没有完整应用服务器的情况下运行Servlet和Filter,只需要一个简单的“微容器”(例如Jetty或Tomcat的嵌入式版本)。这使得开发和测试环境更加轻量级。 4. **动态注册**:除了使用...

Global site tag (gtag.js) - Google Analytics