# 路径和 CLASSPATH

> 原文： [https://docs.oracle.com/javase/tutorial/essential/environment/paths.html](https://docs.oracle.com/javase/tutorial/essential/environment/paths.html)

本节介绍如何在 Microsoft Windows，Solaris 和 Linux 上使用`PATH`和`CLASSPATH`环境变量。有关最新信息，请参阅安装 Java Development Kit（JDK）软件包中随附的安装说明。

安装软件后，JDK 目录将具有如下所示的结构。

<center>![JDK directory structure](img/5cf035e0d9f655a41545e2f82574ca42.jpg)</center>

`bin`目录包含编译器和启动器。

## 更新 PATH 环境变量（Microsoft Windows）

您可以在不设置`PATH`环境变量的情况下正常运行 Java 应用程序。或者，您可以选择将其设置为方便。

如果希望能够从任何目录方便地运行可执行文件（`javac.exe`，`java.exe`，`javadoc.exe`等）而不必键入命令的完整路径，请设置`PATH`环境变量。如果未设置`PATH`变量，则需要在每次运行时指定可执行文件的完整路径，例如：

```
C:\Java\jdk1.7.0\bin\javac MyClass.java

```

`PATH`环境变量是由分号（`;`）分隔的一系列目录。 Microsoft Windows 从左到右按顺序查找`PATH`目录中的程序。您应该一次只有一个`bin`目录用于路径中的 JDK（第一个被忽略的目录），因此如果已存在，则可以更新该特定条目。

以下是`PATH`环境变量的示例：

```
C:\Java\jdk1.7.0\bin;C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem

```

永久设置`PATH`环境变量非常有用，因此在重新启动后它将保持不变。要永久更改`PATH`变量，请使用控制面板中的**系统**图标。具体过程因 Windows 版本而异：

**Windows XP**

1.  选择**启动**，选择**控制面板**。双击**系统**，然后选择**高级**选项卡。
2.  单击**环境变量**。在**系统变量**部分中，找到`PATH`环境变量并选择它。单击**编辑**。如果`PATH`环境变量不存在，请单击`New`。
3.  在**编辑系统变量**（或**新系统变量**）窗口中，指定`PATH`环境变量的值。单击**确定**。单击**确定**关闭所有剩余窗口。

**Windows Vista:**

1.  在桌面上，右键单击**我的电脑**图标。
2.  从上下文菜单中选择**属性**。
3.  单击**高级**选项卡（Vista 中的**高级系统设置**链接）。
4.  单击**环境变量**。在**系统变量**部分中，找到`PATH`环境变量并选择它。单击**编辑**。如果`PATH`环境变量不存在，请单击`New`。
5.  在**编辑系统变量**（或**新系统变量**）窗口中，指定`PATH`环境变量的值。单击**确定**。单击**确定**关闭所有剩余窗口。

**Windows 7:**

1.  在桌面上，右键单击**计算机**图标。
2.  从上下文菜单中选择**属性**。
3.  单击**高级系统设置**链接。
4.  单击**环境变量**。在**系统变量**部分中，找到`PATH`环境变量并选择它。单击**编辑**。如果`PATH`环境变量不存在，请单击`New`。
5.  在**编辑系统变量**（或**新系统变量**）窗口中，指定`PATH`环境变量的值。单击**确定**。单击**确定**关闭所有剩余窗口。

* * *

**Note:** You may see a `PATH` environment variable similar to the following when editing it from the Control Panel:

```
%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

```

Variables enclosed in percentage signs (`%`) are existing environment variables. If one of these variables is listed in the **Environment Variables** window from the Control Panel (such as `JAVA_HOME`), then you can edit its value. If it does not appear, then it is a special environment variable that the operating system has defined. For example, `SystemRoot` is the location of the Microsoft Windows system folder. To obtain the value of a environment variable, enter the following at a command prompt. (This example obtains the value of the `SystemRoot` environment variable):

```
echo %SystemRoot%

```

* * *

## 更新 PATH 变量（Solaris 和 Linux）

您可以在不设置`PATH`变量的情况下运行 JDK，也可以选择将其设置为方便。但是，如果希望能够从任何目录运行可执行文件（`javac`，`java`，`javadoc`等）而不必键入命令的完整路径，则应设置路径变量。如果未设置`PATH`变量，则需要在每次运行时指定可执行文件的完整路径，例如：

```
% /usr/local/jdk1.7.0/bin/javac MyClass.java

```

要确定路径是否正确设置，请执行：

```
% java -version

```

这将打印`java`工具的版本，如果它可以找到它。如果版本旧或者您收到错误 **java：Command not found** ，则路径未正确设置。

要永久设置路径，请在启动文件中设置路径。

对于 C shell（`csh`），编辑启动文件`(~/.cshrc`）：

```
set path=(/usr/local/jdk1.7.0/bin $path)

```

对于`bash`，编辑启动文件（`~/.bashrc`）：

```
PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH

```

对于`ksh`，启动文件由环境变量`ENV`命名。要设置路径：

```
PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH

```

对于`sh`，编辑配置文件（`~/.profile`）：

```
PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH

```

然后加载启动文件并通过重复`java`命令验证路径是否已设置：

对于 C shell（`csh`）：

```
% source ~/.cshrc
% java -version

```

对于`ksh`，`bash`或`sh`：

```
% . /.profile
% java -version

```

`CLASSPATH`变量是告诉应用程序（包括 JDK 工具）查找用户类的一种方法。 （属于 JRE，JDK 平台和扩展的类应该通过其他方式定义，例如引导类路径或扩展目录。）

指定类路径的首选方法是使用`-cp`命令行开关。这允许为每个应用程序单独设置`CLASSPATH`，而不会影响其他应用程序。 _ 设置`CLASSPATH`可能很棘手，应小心执行。_

类路径的默认值为“。”，表示仅搜索当前目录。指定 CLASSPATH 变量或`-cp`命令行开关将覆盖此值。

要检查是否在 Microsoft Windows NT / 2000 / XP 上设置了`CLASSPATH`，请执行以下操作：

```
C:> echo %CLASSPATH%

```

在 Solaris 或 Linux 上，执行以下命令：

```
% echo $CLASSPATH

```

如果未设置`CLASSPATH`，您将收到 **CLASSPATH：未定义变量**错误（Solaris 或 Linux）或仅**％CLASSPATH％**（Microsoft Windows NT / 2000 / XP）。

要修改`CLASSPATH`，请使用与`PATH`变量相同的步骤。

类路径通配符允许您在类路径中包含`.jar`文件的整个目录，而无需单独指定它们。有关更多信息，包括类路径通配符的说明以及有关如何清理`CLASSPATH`环境变量的详细说明，请参阅[设置类路径](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html)技术说明。