2

java 启动查看jar包加载顺序并设置classpath - 香吧香

 1 year ago
source link: https://www.cnblogs.com/zjdxr-up/p/17111093.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文为博主原创,转载请注明出处:

1.idea查看jar包加载顺序

  jdk8 可以通过     -XX:+TraceClassPaths    参数进行查看jar包的加载顺序

  jdk11 可以通过     -Xlog:class+path=info   参数进行查看jar包的加载顺序

  idea 启动查看配置方式如下:

  

1110857-20230211104727899-1029222602.png

进行服务启动之后,会在控制台打印jvm加载时的classpath参数;示例如下:

  

1110857-20230211105505872-1867052274.png

  在控制台 搜索 java.class.path 就能看到具体的配置;java.class.path 的顺序就是 jvm 加载class以及 jar包的顺序;排在前面的会优先加载;

 2.tomcat启动加载顺序

当我们启动一个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文件就不会被加载了。

3.设置 classpath 

  设置多个类路径;多个类路径以分号分隔

D:> java -classpath C:\java\MyClasse1;C:\java\MyClass2 com.yiibai.MainApp

  设置多个jar的路径顺序:多个jar使用 英文冒号进行分割

-classpath  /data/tomcat_8081/bin/bootstrap.jar:/data/tomcat_8081/bin/tomcat-juli.jar 

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK