当我们启动一个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文件就不会被加载了。
转自:http://xiaomogui.iteye.com/blog/847686
分享到:
相关推荐
在Tomcat启动过程中,类的加载顺序是非常重要的一个环节,因为这直接影响到Web应用的正常运行以及类库冲突等问题。 #### 二、类加载机制概述 在Java中,类加载器(ClassLoader)负责将.class文件加载到JVM中。Tomcat...
例如,可以通过修改`common.loader`、`shared.loader`和`context.loader`属性来改变类的加载顺序和来源。 在深入研究"DevLoader"之前,需要查看压缩包内的具体文件,例如org目录下可能包含与DevLoader相关的源代码...
7. **分析类加载顺序**:通过WebLogic的日志或工具,如`jarscan`,可以分析类加载顺序,找出冲突的根源。 8. **使用Maven或Gradle的依赖管理**:通过构建工具的依赖管理功能,可以更有效地控制应用的依赖关系,防止...
1. **加载顺序**:在Tomcat中,类的加载遵循特定的顺序。通常情况下,每个子类加载器会先尝试从自己的类路径中加载类,如果找不到,则会向上委托给父类加载器进行加载。这种委托模式确保了类的单一性和安全性。 2. ...
加载外部Jar到这两种类型的包中,需要考虑到它们的执行环境和加载顺序。 7. **代码示例**: 创建一个简单的自定义类加载器可能如下: ```java public class ExternalJarClassLoader extends ClassLoader { ...
Tomcat 组成及工作原理借鉴 Tomcat 是一个开源的 Web 服务器软件,由 ...Tomcat 是一个功能强大和灵活的 Web 服务器软件,提供了一个完善的类加载机制和配置机制,使得开发人员可以快速地开发和部署 Web 应用程序。
以下是类加载器的基本层级结构及其加载顺序: - **Bootstrap ClassLoader**:加载Java核心类库,位于`$JAVA_HOME/jre/lib/ext/*.jar`。 - **System ClassLoader**:加载用户自定义的类和类路径中的类库。 - **...
除此之外,jar包还可能包含资源文件(如图片、配置文件等)和相关的元数据,如清单文件(Manifest file),它定义了类加载顺序、主类(main class)等信息。 创建jar包的过程通常包括以下几个步骤: 1. **编写Java...
在Tomcat的运行过程中,ClassLoader起着至关重要的作用,它负责加载应用程序中的类,理解其工作原理能够帮助我们更好地优化应用性能和解决各种加载问题。本文将聚焦于Tomcat 5.0.18版本的ClassLoader源码,探索其...
Tomcat采用了一种层次化的类加载机制,确保每个类加载器只加载自己权限范围内的类,并遵循特定的加载顺序。这种机制保证了系统的稳定性和安全性。 1. **Bootstrap**:加载核心Java库,这些库通常位于`$JAVA_HOME/...
4. `System`:加载系统类路径中的类和JAR。 5. `$CATALINA_HOME/common/classes`:加载全局共享类。 6. `$CATALINA_HOME/common/endorsed/*.jar`:加载全局共享的JAR。 7. `$CATALINA_HOME/common/lib/*.jar`:加载...
- 类文件和JAR文件的放置位置会影响类的加载顺序。Tomcat会优先加载`classes`目录下的类文件,之后才是`lib`目录下的JAR文件。 - `WEB-INF`目录下的文件对外部直接访问是不可见的,以确保安全性和整洁性。 - 在部署...
- WebappX类加载器:每个Web应用都有一个对应的WebappX类加载器,父加载器是Shared,主要负责加载应用的/WEB-INF/classes目录下的class和/WEB-INF/lib目录中的jar包。 - JasperLoader:用于加载JSP编译后的class文件...
- **加载顺序**:`load-on-startup`指定Servlet加载的优先级,数值越小优先级越高。 #### 五、总结 通过上述步骤,可以有效地配置JDK、Tomcat5.5、Tomcat6.0以及部署MySQL驱动程序。正确的配置是成功部署Java Web...
TOMCAT配置详解 TOMCAT是一款流行的开源Web服务器软件,它基于Java语言开发,可以运行于多种操作系统平台上。在本文中,我们将详细介绍TOMCAT的配置详解,...其中,类库的存放位置和加载顺序是TOMCAT配置的重要部分。
有时,类加载顺序问题也可能导致这种错误。 5. **更新版本**:如果上述步骤都无法解决问题,考虑升级Sitemesh到最新版本,或者回退到已知兼容的版本。 6. **日志和调试**:启用服务器和应用的日志记录,通过详细的...