了解如何将类路径设置为环境变量并作为命令行参数传递。 在任何 Java 应用程序的运行期间,CLASSPATH
是一个告诉 JVM 在何处查找类和包的参数,可以使用环境变量或命令行参数进行设置。
类路径分隔符:
Windows –
;
(分号)Linux / Unix –
:
(冒号)
1. 将 Java 类路径设置为环境变量
当您设置了在应用程序运行期间始终需要的 jar 文件集时,最好将它们添加到计算机的环境变量'CLASSPATH'
中。 在应用程序运行时,应用程序类加载器将始终在此变量的指定路径下扫描 jar 文件和类。
要设置类路径环境变量,请在您的计算机中查找用户变量的位置,并添加存储 Jar 文件的所有路径。 在两个不同的文件夹,jar 文件或类之间使用分隔符。
例如,您可以通过以下方式找到环境变量:
- 在桌面上,右键单击计算机图标。
- 从上下文菜单中选择属性。
- 单击高级系统设置链接。
- 单击环境变量。 在系统变量部分中,找到
CLASSPATH
环境变量并将其选中。 点击编辑。 如果CLASSPATH
环境变量不存在,请单击New
。 - 添加所有用分隔符分隔的文件夹。 单击 OK。 通过单击 OK 关闭所有剩余的窗口。
系统属性
如果是第一次创建CLASSPATH
,则需要在窗口中指定变量名的名称。 使用'.'
(点)表示当前目录。
2. 从命令行设置 Java 类路径
使用-classpath
参数从命令提示符/控制台设置类路径。 使用以下给定的命令来设置不同需求的类路径。 假设我们有一个名为dependency
的文件夹,用于放置 JAR 文件和其他类。
2.1 在类路径中添加单个 jar 文件
下面的语法示例将在类路径中添加单个 jar 文件。
//WINDOWS
$ set CLASSPATH=.;C:\dependency\framework.jar
//Linux/Unix
$ export CLASSPATH=.:/dependency/framework.jar
2.2 在类路径中添加多个 jar 文件
以下语法示例将在类路径中添加多个 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
,则控制台将显示“CLASSPATH
:未定义的变量”错误(Solaris 或 Linux),或仅在 Windows 命令提示符中打印%CLASSPATH%
。
学习愉快!
阅读更多: