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

1.idea查看jar包加载顺序

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

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

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

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

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

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

  在控制台 搜索 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 

4.代码查看 classpath 

String javaClassPath = System.getProperty("java.class.path");
log.error("----- {}",javaClassPath);
02-20 11:13