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

1.idea查看jar包加载顺序

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

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

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

  

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

  

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

java 启动查看jar包加载顺序并设置classpath的更多相关文章

  1. tomcat jar包加载顺序

    加载顺序: 1. $java_home/lib 目录下的java核心api 2. $java_home/lib/ext 目录下的java扩展jar包 3. java -classpath/-Djava ...

  2. jar类库加载顺序

    当我们启动一个tomcat的服务的时候,jar包和claess文件加载顺序: 1. $java_home/lib 目录下的java核心api 2. $java_home/lib/ext 目录下的jav ...

  3. spring加载过程中jar包加载不了,解决方法

    当我们在开发spring项目时,一般会将jar包放到webInf/lib下,这样是myeclipse自动将jar包加载到tomcat中webapps下,但是当我们新建一个lib文件夹的情况下,我们ad ...

  4. java反射查看jar包中所有的类名方法名

    不反编译,不用其他工具,用java反射查看jar包中所有的类名方法名,网上很多都报错,下面这个你试试看:话不多说直接撸代码: import java.lang.reflect.Field; impor ...

  5. tomcat中class和jar的加载顺序(转)

    https://blog.csdn.net/lipei1220/article/details/53924799 加载顺序: 1. $java_home/lib 目录下的java核心api 2. $j ...

  6. 【java虚拟机系列】java中类与对象的加载顺序

    首先了解一下Java虚拟机初始化的原理. JVM通过加装.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用.类型的生命周期如下图所示: 装载和连接必须在初始化之前就要完成. 类 ...

  7. Java 类中各成分加载顺序 和 内存中的存放位置

    参加一个笔试,有一个关于类的静态代码块.构造代码块.构造函数的执行顺序的问题.不太清楚,网上百度了一下.在这里记录一下. 一.什么时候会加载类?使用到类中的内容时加载:有三种情况1.创建对象:new ...

  8. Java启动工程时,加载固定数据到Map中(不用每次访问数据库)

    如下:启动工程时,加载配置文件的用户名和密码到map中, 通过getKeyByValue()获取即可 import java.util.HashMap; import java.util.Map; i ...

  9. java类中属性的加载顺序,以及内存分配情况介绍

    看下面例子及说明: /** 假如有外部类调用了该类,代码为:new StaticTest(); 那么下面是类属性的加载顺序 */ public class StaticTest{ public int ...

  10. Java中类及方法的加载顺序

    1. 虚拟机在首次加载Java类时,会对静态代码块.静态成员变量.静态方法进行一次初始化(静态间按顺序执行). 2. 只有在调用new方法时才会创建类的实例. 3. 类实例创建过程:父子继承关系,先父 ...

随机推荐

  1. java学习之springboot

    0x00前言 呀呀呀时隔好久我又来做笔记了,上个月去大型保密活动了,这里在网上看了一些教程如果说不是去做java开发我就不做ssm的手动整合了采用springboot去一并开发. Spring Boo ...

  2. vue引用MarkDown(mavonEditor)编辑器,文档

    mavonEditor Install mavon-editor (安装) npm install mavon-editor --save 如何引入: 全局引用: // 全局注册 import Vue ...

  3. i春秋include

    打开题目,发现它提示我们有个phpinfo.php,所以我们直接访问,没有什么特殊的发现,根据题目提示include,找到allow_url_include的信息 (ctrl+f直接进入网页搜索) 发 ...

  4. ubuntu 22.04安装多个gcc

    sudo apt install gcc-9 g++-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 - ...

  5. 在CentOS编译Git源码

    Git 是一个免费的开源分布式版本控制系统,旨在处理从小到小到的所有内容 具有速度和效率的超大型项目. Git易于学习,占用空间很小,性能快如闪电. 它超越了Subversion,CVS,Perfor ...

  6. python-py文件打包成exe可执行文件

    方法一::打包完成后可以直接被他人使用,他人不用安装python环境的 可以使用pyinstaller模块实现将python项目打包成exe执行文件 """ 先安装模块 ...

  7. 【Day03】Spring cloud:源码讲解与容器化初探

    今日内容 原理和源码 容器化过度 一.Naocs 1.介绍 server端 启动入口类(Spring Boot项目,提供8848端口的监听访问) 源码包含InstanceController类(ser ...

  8. 【Day04】Spring Cloud 升华篇:容器化技术docker和kurbernetes

    一.介绍 1.要考虑的问题 微服务数量有很多 中间件的部署-nacos-server sentinel-server 如何部署多个服务和中间件? 2.存在问题---机器上直接解压使用 资源利用率的问题 ...

  9. 大数据HDFS凭啥能存下百亿数据?

    欢迎关注大数据系列课程 前言 大家平时经常用的百度网盘存放电影.照片.文档等,那有想过百度网盘是如何存下那么多文件的呢?难到是用一台计算机器存的吗?那得多大磁盘啊?显然不是的,那本文就带大家揭秘. 分 ...

  10. 使用Google OR-Tools分析过去20年中国金融资产最佳配置组合

    前两天,在朋友圈里看到一张截至2022年Q2的金融资产历年收益图如下,图中列举了国内从2005年到2022年近20年主要的金融资产历年收益率,随产生想法分析和验证下面几个问题: 过去20年,基于怎样的 ...