欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于 Java classpath 的一切

程序员文章站 2022-06-04 14:49:24
...

classpath 是 JVM 和 Java 编译器的一个参数,用于指定你的类和包的位置。设置 classpath 有两个途径:

  • 命令行
  • 环境变量

1. 虚拟机查找和载入类的顺序

就像动态载入一样,当执行 Java 程序时,JVM 查找和载入类文件时是惰性的——类的字节码文件在第一次被使用时才会被载入。虚拟机查找和载入类的顺序如下:

  1. bootstrap classes 引导类:Java 平台的基础类,JDK 标准 API
  2. extension classes 扩展类:位于 JRE 或 JDK 的扩展目录 jre/lib/ext/
  3. user-defined packages and libraries:用户定义的包和库

默认地,前两种类的访问是自动行为,不需要指定路径。

2. 设置路径

假设我们有一个包 org.mypackage,其中含有下面三个类文件:

  • HelloWorld.class(含有 main 方法)
  • Support.class(支持类)
  • Utils.class(工具类)

这个包位于 D:\mprogram (Windows)或 ~/myprogram(Linux)下,目录结构如下:

D:\mprogram\myprogram/
└── org
    └── mypackage
        ├── HelloWorld.class
        ├── Support.class
        └── Utils.class
~/myprogram/
└── org
    └── mypackage
        ├── HelloWorld.class
        ├── Support.class
        └── Utils.class

运行程序:

Windows

java -classpath D:\myprogram org.mypackage.HelloWorld

Linux

java -cp ~/myprogram/ org.mypackage.HelloWorld

2.1