Java从入门到项目实战(全程视频版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.7 CLASSPATH环境属性

img

Java程序的执行依赖于JVM,当用户使用Java命令去解释class字节码文件时实际上都会启动一个JVM进程,而在这个JVM进程中需要有一个明确的类加载路径,而这个路径就是通过CLASSPATH环境属性指派的,执行流程如图1-24所示。

img

图1-24 CLASSPATH作用

在Java中可以使用SET CLASSPATH命令指定Java类的执行路径,这样就可以在不同的路径下加载指定路径中的class文件进行执行。下面通过一个实验来了解CLASSPATH的作用,假设这里的Hello.class类位于D:\mldnjava目录下。

在任意盘符的命令行窗口执行下面的指令。

SET CLASSPATH=D:\mldnjava

之后在E盘根目录下执行:java Hello,如图1-25所示。

img

图1-25 CLASSPATH设置

由上面的输出结果可以发现,虽然在E盘根目录中并没有Hello.class文件,但是也可以用java Hello执行Hello.class文件。之所以会有这种结果,就是因为在操作中使用了SET CLASSPATH命令,将类的加载路径指向了D:\mldnjava目录,所以在运行时,会从D:\mldnjava目录中查找所需要的类。

提示:CLASSPATH与JVM的关系。

CLASSPATH主要指的是类的运行路径,实际上在读者执行Java命令的时候,对于本地的操作系统来说就意味着启动了一个JVM,那么JVM在运行的时候需要通过CLASSPATH加载所需要的类,而默认情况下CLASSPATH是指向当前目录(当前命令行窗口所在的目录)之中的,所以会从此目录下直接查找。

但是这样随意设置加载路径的方式实际上并不好用,最好的做法还是从当前所在路径中加载所需要的程序类。所以在设置CLASSPATH时,最好将CLASSPATH指向当前目录,即所有的class文件都从当前文件夹中开始查找,路径设置为“.”,格式如下。

SET CLASSPATH=.

但是这样的操作都属于每一个命令行窗口的单独设置,如果要想让CLASSPATH针对于全局都有作用,则可以在环境属性中添加CLASSPATH属性并进行配置,如图1-26所示。

img

图1-26 定义CLASSPATH环境属性