在程序运行期间,CLASSPATH是JVM用于查找class和package路径的变量,可以通过环境变量或者命令行方式进行设置。
举例:
假设我们的Jar包在dependency目录下,class文件在location目录下:
在CLASSPATH加上Jar文件路径
- Windows
set CLASSPATH=C:\dependency\framework.jar
set CLASSPATH=C:\dependency\framework.jar;C:\location\otherFramework.jar
set CLASSPATH=C:\dependency\*;C:\location\*
或:
javac –classpath C:\dependency\framework.jar
javac –classpath C:\dependency\framework.jar;C:\location\otherFramework.jar
- Linux/Unix
export CLASSPATH=/dependency/framework.jar
export CLASSPATH=/dependency/framework.jar;/location/otherFramework.jar
export CLASSPATH=/dependency/*;/location/*
或:
javac –classpath /dependency/framework.jar
javac –classpath /dependency/framework.jar;/location/otherFramework.jar
在CLASSPATH加上class文件路径
- Windows
set CLASSPATH=C:\dependency\*;C:\location
- Linux/Unix
export CLASSPATH=/dependency/*;/location
【总结】
结合以上翻译及看过的其他资料做如下总结:
CLASSPATH
java test.class
用于查找类文件编译成功后的class文件。
需要注意的是:
- 使用set命令的设置为临时设置,永久配置为
CLASSPATH=C:\dependency\*;C:\location
- 没有设置CLASSPATH时,java启动JVM后,会在当前目录下寻找class文件。设置后会在指定目录下寻找文件,至于是否还在当前目录下查找,包含两种情况:
-
如果CLASSPATH的路径结尾有 “;”,如果没有在指定路径下找到运行的类,则会在当前目录再找一次。
-
如果CLASSPATH的路径结尾没有 “;”,则不会再在当前目录下查找。
*一般不要在路径末尾加上“;”,这样一旦在指定路径下没有对应文件,应该报错,方便debug。
另一种变量JAVA_HOME
是用来查找编译java文件的运行程序的路径,即使用java\javac等命令时需要添加的变量设置
javac test.java
设置方法为:
JAVA_HOME=%安装路径%\Java\jdk
path=%JAVA_HOME%\bin