了解如何在 Java 中设置类路径作为环境变量并作为命令行参数传递。在任何 Java 应用程序的运行期间,CLASSPATH 是一个参数,它告诉 JVM 到哪里寻找类和包。
.
”(点)
,表示仅在当前目录中搜索依赖项。CLASSPATH
环境变量或 -cp
命令行开关会覆盖此值。Java 类路径分隔符是特定于操作系统的。 Windows –
;
[分号] Linux/Unix –:
[冒号]
CLASSPATH
设置为环境变量当您设置了应用程序运行期间始终需要的 jar 文件的位置时,最好将它们添加到机器的环境变量 'CLASSPATH'
中。
在应用程序运行期间,应用程序类加载器 将始终扫描指定路径中的 jar 文件和类这个变量。
要设置CLASSPATH
环境变量,请在您的计算机中找到用户环境变量的位置,并添加所有存储Jar 文件的路径。在不同的两个文件夹、jar 文件或类之间使用分隔符。
您可以通过以下方式找到用户环境变量窗口:
CLASSPATH
环境变量并选择它。点击编辑。如果CLASSPATH
环境变量不存在,点击新建
。系统属性
如果您是第一次创建 CLASSPATH,您需要在 Windows 10 中为 Variable Name 指定名称。使用 '.'
(点)表示当前目录。
使用 -classpath
参数从命令提示符/控制台设置类路径。使用下面给出的命令为不同的要求设置类路径。
假设我们有一个名为 dependency
的文件夹,其中放置了 JAR 文件和其他类。
下面的语法示例将在类路径中添加单个 jar 文件。
//WINDOWS $ set CLASSPATH=.;C:\dependency\framework.jar //Linux/Unix $ export CLASSPATH=.:/dependency/framework.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
很多时候,您可能还需要在类路径中添加单独的类。为此,只需添加类文件所在的文件夹。例如假设 location
文件夹中有五个 .class
文件,您希望将其包含在类路径中。
//WINDOWS $ set CLASSPATH=C:\dependency\*;C:\location //Linux/Unix $ export CLASSPATH=/dependency/*:/location
作为最佳实践,始终将所有 JAR 文件和应用程序类组织在一个根文件夹中。这可能是应用程序的工作区。
如果您的 CLASSPATH 环境变量设置为不正确的值,那么您可以取消设置 CLASSPATH 并为其指定空值。
set CLASSPATH=
除了将类路径设置为环境变量外,您还可以在使用 –classpath
选项或 –cp
选项启动应用程序时将其他类路径传递给 Java 运行时。
使用 .
(点)将当前路径包含到生成 .class
文件的类路径中。
$ javac –classpath C:\dependency\framework.jar MyApp.Java $ java –classpath .;C:\dependency\framework.jar MyApp
CLASSPATH
值任何时候您希望验证 CLASSPATH
变量中的所有路径条目,您可以使用 echo 命令进行验证。
//Windows c:/> echo %CLASSPATH% //Linux/Unix $ echo $CLASSPATH
如果未设置 CLASSPATH,您将得到一个 CLASSPATH: Undefined variable error(Solaris 或 Linux)控制台或简单地在 Windows 命令提示符中打印 %CLASSPATH%。
快乐学习!!
阅读更多:
Java – 如何在 Windows 7、8、10 中设置类路径 Java – 从命令行设置类路径
地址:https://www.cundage.com/article/java-classpath.html