前言:
**1.4 系统环境变量**
---
**主要内容**:
- **系统环境变量的定义**: 系统环境变量是在计算机操作系统中定义的一系列变量。这些变量是全局的,可以被操作系统上的所有应用程序所使用。
- **Java中的环境变量**:
- 当学习和使用Java时,有两个特别重要的系统环境变量需要配置:`PATH` 和 `CLASSPATH`。
- `PATH` 是用来告诉操作系统在哪里可以找到可执行文件,如 `javac`。
- `CLASSPATH` 是用来告诉Java运行时从哪里加载类文件。
**示例与说明**:
- 如果不配置PATH环境变量,当你在任何位置尝试运行`javac`命令时,系统可能会提示错误,表示没有找到该命令。这是因为系统不知道去哪里查找这个命令。
- 通过在命令行窗口输入 `set PATH` 命令,你可以查看当前系统的PATH环境变量值。
**图片参考**:
- 图1-12: 显示“查看”选项卡的界面。
- 图1-13: 显示了尝试在未配置PATH的情况下执行`javac`命令的错误提示。
- 图1-14: 显示了通过`set PATH`命令查看的系统PATH环境变量值。
**总结**:
配置正确的系统环境变量对于Java开发是非常关键的。它确保了在任何位置都可以轻松地运行Java相关的命令,并且Java程序可以正确地加载所需的类文件。
1.4.1 PATH环境变量
**1.4.1 PATH环境变量**
---
**主要内容**:
1. **定义**:
- PATH环境变量是用于存储命令或可执行程序的路径的一系列值,路径之间以分号分隔。
- 当执行一个命令时,系统首先在当前目录搜索对应的可执行文件,未找到时,会在PATH环境变量定义的路径中查找。
2. **javac命令问题**:
- 如果不将javac所在的路径加入到PATH变量,会导致系统找不到javac命令,如图1-13所示。
- 从图1-14可以看到,PATH没有javac的路径。
3. **解决方法**:
- 为了使javac命令有效,需要将其路径添加到PATH中。
- 使用命令:`set path=%PATH%;C:\Program Files\Java\jdk-11.0.11\bin` 以将javac的路径加入到当前PATH。
- %PATH%是引用当前的PATH值;而`C:\Program Files\Java\jdk-11.0.11\bin` 是javac所在的路径。
- 图1-15展示了添加后的PATH值。
4. **持久化PATH配置**:
- 在命令行下的PATH修改是临时的,关闭窗口后会失效。
- 为了持久保存PATH设置,需要在系统属性中进行配置。
5. **系统属性配置步骤**:
- 右击“计算机” -> “属性” -> “高级系统设置” -> “环境变量” (如图1-17)。
- 在弹出的环境变量对话框中,找到并选择PATH变量 -> “编辑”(如图1-18)。
- 点击“新建”并添加javac的路径(如图1-19),然后点击确定完成配置。
6. **验证**:
- 打开命令行,执行 `set path` 查看配置(如图1-20)。
- 如果javac的路径出现在结果中,表示配置成功。
**结论**:
为了在任何位置都能执行javac命令,必须将其路径添加到PATH环境变量中,并确保在系统属性中永久保存该配置。
1.4.2 CLASSPATH 环境变量
**1.4.2 CLASSPATH环境变量**
---
**定义:** CLASSPATH是一个环境变量,它定义了Java类库和用户定义类的搜索路径。Java虚拟机(JVM)使用此路径来查找字节代码文件(.class文件)。
**主要内容:**
1. **用途**:当JVM试图加载某个类时,它会查看CLASSPATH中定义的路径来搜索该类的.class文件。
2. **查看和配置**:CLASSPATH的查看与配置方式与PATH环境变量相同。
3. **示例**:
- **错误场景**:在C盘根目录下使用命令`java HelloWorld`尝试运行预先编译好的HelloWorld程序,结果报错(见图1-21)。错误的原因是JVM无法在指定的路径下找到HelloWorld.class文件。
- **检查CLASSPATH**:使用`set classpath`命令查看当前CLASSPATH环境变量的值(见图1-22)。这将显示CLASSPATH是否已经包含了HelloWorld.class文件的路径。在此示例中,它没有被设置。
- **设置CLASSPATH**:通过执行命令`set classpath=C:\Program Files\Java\jdk-11.0.11\bin`,为JVM指定了.class文件的位置。再次运行`java HelloWorld`后,程序成功执行并输出"hello world"(见图1-23)。这表明即使HelloWorld.class文件不在C盘根目录下,但只要在CLASSPATH中正确指定了其位置,`java HelloWorld`命令仍然可以正确执行。
4. **注意事项**:从JDK 5开始,如果用户没有设置CLASSPATH环境变量,JVM会默认将CLASSPATH设置为“.”(即当前目录)。因此,在JDK 5及更高版本中,如果HelloWorld.class文件位于当前目录,并且没有设置CLASSPATH,那么JVM仍然可以找到并运行HelloWorld程序。
---
**结论**: 理解和正确设置CLASSPATH对于Java编程是非常重要的。如果JVM不能在CLASSPATH指定的位置找到.class文件,程序就会失败。另外,JDK的后续版本提供了一些便利性,例如默认的CLASSPATH设置为当前目录,这使得开发过程更加简便。但仍然需要确保了解和掌握如何手动设置CLASSPATH。