Java虚拟机(JVM)寻找Class的顺序
1. Bootstrap classes
属于Java 平台核心的class,比如java.lang.String等.及rt.jar等重要的核心级别的class.这是由JVM Bootstrap class loader来载入的.一般是放置在{java_home}\jre\lib目录下
2. Extension classes
基于Java扩展机制,用来扩展Java核心功能模块.比如Java串口通讯模块comm.jar.一般放置在{Java_home}\jre\lib\ext目录下
3. User classes
开发人员或其他第三方开发的Java程序包.通过命令行的-classpath或-cp,或者通过设置CLASSPATH环境变量来引用.JVM通过放置在{java_home}\lib\tools.jar来寻找和调用用户级的class.常用的javac也是通过调用tools.jar来寻找用户指定的路径来编译Java源程序.这样就引出了User class路径搜索的顺序或优先级别的问题.
3.1 缺省值:调用Java或javawa的当前路径(.),是开发的class所存在的当前目录
3.2 CLASSPATH环境变量设置的路径.如果设置了CLASSPATH,则CLASSPATH的值会覆盖缺省值
3.3 执行Java的命令行-classpath或-cp的值,如果制定了这两个命令行参数之一,它的值会覆盖环境变量CLASSPATH的值
3.4 -jar 选项:如果通过java -jar 来运行一个可执行的jar包,这当前jar包会覆盖上面所有的值.换句话说,-jar 后面所跟的jar包的优先级别最高,如果指定了-jar选项,所有环境变量和命令行制定的搜索路径都将被忽略.JVM APPClassloader将只会以jar包为搜索范围.
有关可执行jar有许多相关的安全方面的描述,可以参考http://java.sun.com/docs/books/tutorial/jar/ 来全面了解.
这也是为什么应用程序打包成可执行的jar包后,不管你怎么设置classpath都不能引用到第三方jar包的东西了.
分享到:
相关推荐
Java虚拟机(JVM)是Java程序的核心组成部分,它负责执行字节码并管理程序运行时的内存。本文主要探讨JVM的类加载机制,包括类加载、连接、初始化等关键过程,以及类的主动使用和被动使用的情况。 首先,我们要理解...
### Java虚拟机类加载顺序详解 #### 一、引言 在Java开发中,了解类是如何被加载到Java虚拟机(JVM)中的至关重要。本文将详细介绍JVM中的类加载顺序及其背后的原理,帮助读者理解这一过程,并掌握如何利用类加载...
Java虚拟机工作原理详解 Java虚拟机工作原理详解是 Java 程序执行的核心组件之一。了解 Java 虚拟机的工作原理对 Java 开发人员来说非常重要。本文将详细介绍 Java 虚拟机工作原理的详细过程和类加载器的工作机理。...
标题《Java虚拟机规范》主要关注点是Java虚拟机(JVM)的设计与工作原理,这包括对Java字节码的理解以及它如何在不同硬件和操作系统平台上实现跨平台的特性。规范中详细介绍了class文件的格式,这是Java源代码编译后...
Java虚拟机(JVM)是一种假想的计算机,它为运行Java字节码提供了一个运行环境。JVM的主要功能是解释并执行由Java编译器产生的字节码文件(.class文件)。由于JVM的存在,Java程序可以跨平台运行,即“一次编写,...
### Java虚拟机(JVM)高级特性与最佳实践 #### 一、Java虚拟机概览 **Java虚拟机(JVM)**是Java技术的核心组成部分,它负责解释执行Java字节码,提供了运行Java程序的基础环境。JVM的设计目标是使Java程序能够跨...
Java虚拟机(JVM)的类装载是指将包含在类文件中的字节码装载到JVM中,并使其成为JVM的一部分的过程。Java虚拟机的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块,而不影响系统其他功能模块的...
这份中文翻译版基于Java SE 7,详细阐述了Java虚拟机(JVM)的工作原理,为开发者提供了深入理解Java平台运行机制的基础。 Java虚拟机是Java平台的核心组成部分,它负责执行字节码,管理内存,实现类加载,垃圾收集...
Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境。Java模拟JVM的项目旨在帮助开发者深入理解JVM的工作原理,包括堆栈管理、指令处理等核心概念。在这个项目中,你将有机会亲自动手实现...
Java虚拟机(Java Virtual Machine,简称JVM)是Java平台的核心组成部分,它允许Java程序在不同的操作系统和硬件平台上无缝运行。JVM的主要任务是将Java字节码转换成本地机器码执行。在分析JVM时,涉及到多个关键...
### 深入理解JVM:Java虚拟机详解 #### 1、Java与JVM介绍 **JVM**,即Java Virtual Machine(Java虚拟机),是用于计算设备的一种规范,它是一个通过在实际计算机上仿真模拟各种计算机功能来实现的虚拟计算机。...
JVM加载class文件的原理机制是Java虚拟机中一个非常重要的组件,负责将class文件加载到内存中,以便Java程序的执行。下面是JVM加载class文件的原理机制的详细介绍: 类加载的原理 在Java中,所有的类都必须被加载...
在深入了解Java虚拟机(JVM)的加载初始化之前,我们先明确一下`Classloader`的角色。简单地说,`Classloader`的主要职责是将编译后的`.class`文件装载到机器的内存中,为后续程序的执行提供必要的条件。这一过程...
- **定义**:Java虚拟机(JVM)是一种能够执行Java字节码的虚拟计算机环境。它包括了一系列的核心组件,如指令集、寄存器、栈、垃圾回收器、堆以及存储方法域等。JVM位于操作系统之上,并不直接与硬件进行交互,而是...
Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序提供了运行环境。深入理解JVM对于优化代码性能、解决内存问题以及提升软件开发效率至关重要。本篇将详细探讨JVM的主要概念、工作原理及其重要特性。 ...
Java虚拟机(JVM)是Java程序运行的核心,它负责加载、验证、执行字节码。在深入理解JVM的过程中,编写自己的类装载器(ClassLoader)是一个非常实用且有趣的实践。这个“java之jvm学习笔记五(实践写自己的类装载器)...
"深入Java虚拟机:JVM中的Stack和Heap" Java虚拟机(JVM)是一种运行Java字节码的虚拟机环境,它具有自己的内存管理机制。JVM的内存分为两个部分:Stack(栈)和Heap(堆)。 Stack(栈)是JVM的内存指令区,管理...
1. **加载(Loading)**:当Java虚拟机(JVM)遇到一个类的引用时,它会首先尝试加载这个类。加载过程通常由类加载器完成,它会找到类的字节码文件(.class文件),并将其转换为内存中的类结构。 2. **验证...