Java 的类路径
在 Java 应用程序的运行期间,CLASSPATH 告诉 JVM 在何处查找类和程序包,可以使用环境变量或命令行参数进行设置。
本文带您了解如何设置 classpath 环境变量并作为命令行参数传递。在任何 Java 应用程序的运行期间,CLASSPATH参数告诉 JVM 在何处查找类和程序包,可以使用环境变量或命令行参数进行设置。
CLASSPATH 分隔符:
- Windows –
;
[分号]- Linux / Unix –
:
[冒号]
1.将 Java 类路径设置为环境变量
当您的应用程序运行期间始终需要的一组 jar 文件时,最好将它们添加到计算机的 'CLASSPATH'
环境变量中。在应用程序运行时,应用程序类加载器将始终扫描此变量中指定路径下的 jar 文件和类。
要设置classpath 环境变量,请在您的计算机中查找用户变量的位置,并添加存储 Jar 文件的所有路径。在不同的两个文件夹,jar 文件或类之间使用分隔符。
例如,您可以通过以下方式找到环境变量:
- 在桌面上,右键单击 “计算机” 图标。
- 从上下文菜单中选择 “属性 ”。
- 单击 高级系统设置 链接。
- 单击 环境变量 。在 “系统变量”部分中,找到
CLASSPATH
环境变量并选择它。点击 编辑。如果CLASSPATH
环境变量不存在,请单击新建
。 - 添加所有用分隔符分隔的文件夹。单击确定。单击确定关闭所有剩余的窗口。
如果是第一次创建 CLASSPATH,则需要在窗口中为 “变量名” 指定 名称。使用 '.'
(点)表示 当前目录。
2. 从命令行设置 Java 类路径
使用 -classpath
参数从命令提示符/控制台设置类路径。使用以下给定的命令来设置不同需求的类路径。假设我们有一个名为 dependency
文件夹, 存放了 JAR 文件和其他类。
2.1 在类路径中添加单个 jar 文件
下面的语法示例将在 classpath 中添加单个 jar 文件。
添加单个 jar
//WINDOWS
$ set CLASSPATH=.;C:\dependency\framework.jar
//Linux/Unix
$ export CLASSPATH=.:/dependency/framework.jar
2.2 在类路径中添加多个 jar 文件
下面的语法示例将在 classpath 中添加多个 jar 文件。为此,只需将操作系统的定界符(;
或:
)用作为 CLASSPATH 指定的位置之间的分隔符。
如果要添加目录中存在的所有 JAR 文件,请使用通配符('*'
)。
//WINDOWS
$ set CLASSPATH=C:\dependency\framework.jar;C:\location\otherFramework.jar
$ set CLASSPATH=C:\dependency\framework.jar;C:\location\*.jar
//Linux/Unix
$ export CLASSPATH=/dependency/framework.jar:/location/otherFramework.jar
$ export CLASSPATH=/dependency\framework.jar:/location/*.jar
2.3 将类添加到类路径
很多时候,您可能还需要在 classpath 中添加单个类。为此,只需添加类文件所在的文件夹。例如,假设文件夹 location
中存在五个 .class
文件。
//WINDOWS
$ set CLASSPATH=C:\dependency\*;C:\location
//Linux/Unix
$ export CLASSPATH=/dependency/*:/location
最佳做法是,始终将所有 JAR 文件和应用程序类组织在一个根文件夹中。这可能是应用程序的工作空间。
请注意,CLASSPATH 文件夹中包含的子目录不会被加载。为了加载子目录中包含的文件,必须在 CLASSPATH 中显式列出这些目录。
3.使用 “-classpath” 参数执行 Java 程序
除了将 classpath 设置为环境变量外,您还可以在使用 –classpath
参数启动应用程序时将其他 classpath 传递给 Java 运行时。
$ javac –classpath C:\dependency\framework.jar MyApp.Java
$ java –classpath C:\dependency\framework.jar MyApp
4.如何检查类路径
当您希望验证 CLASSPATH
变量中的所有路径条目时,都可以使用echo命令打印出内容进行验证。
//Windows
c:/> echo %CLASSPATH%
//Linux/Unix
$ echo $CLASSPATH
如果未设置 CLASSPATH,再 Solaris 或 Linux 平台会输出 CLASSPATH: Undefined variable error, 在 Windows 平台则只会输出 %CLASSPATH% 。