Java-CLASSPATH

68次阅读

共计 962 个字符,预计需要花费 3 分钟才能阅读完成。

CLASSPATH

定义

The class path is the path that the Java runtime environment searches for classes and other resource files

设定方式

1,环境变量 CLASSPATH
2,java/javac -cp 或者 -classpath

设定场景

CLASSPATH 的设定取决于你设定的对象,大致有三种场景:
1,对于 jar 或者 zip 文件(包含 class 文件),CLASSPATH 需要设置为 jar 或 zip 文件全路径,例如:

java -cp /java/MyClasses/myclasses.jar utility.myapp.Cool

2,对于 class 文件中,没有首行 package 定义的 class,CLASSPATH 需要设置为改 class 文件所在的目录即可
3,对于 class 文件中,首行有明确 package 定义的 class,CLASSPATH 需要设置为 package 定义中包含 root package 的目录即可

CLASSPATH 和 package 的区别

package 是 java 文件中首行的定义,通常我们会将 java 文件组织到一个 package 下面,而对于 class 文件而言,CLASSPATH 就是包含 package 定义中的 root package 的目录!

通配符 * 注意事项

如果 CLASSPATH 中存在通配符,例如

java -cp /java/libs/* utility.myapp.Cool

这样只会将 /java/libs/ 目录下的以.jar 或者.JAR 结尾的文件作为 CLASSPATH,并不会包含 class 文件。
但是如果想同时包含 class 文件和 jar 文件作为 CLASSPATH,可以配置为

java -cp /java/libs/*:/java/libs utility.myapp.Cool

其中:代表多个 CLASSPATH 之间的隔离符号

How The JVM find Classes

当 Java Launcher 启动 JVM 后,JVM 主要从三个地方寻找 class:
1,Bootstrap classes

 就是 rt.jar 和 jre/lib 目录下的其他几个 jar 包 

2,Extension classes

jre/lib/ext 目录下的几个 jar 包 

3,User classes

 通过 CLASSPATH 指定的目录或者 jar 包 

正文完
 0