>为何需要classpath
//为了搜索程序需要的class
>谁来搜索呢?
//jvm, classpath是JVM用到的一个环境变量
>默认的classpath是'.', 即当前目录。
没有设置系统环境变量,也没有传入-cp参数,那么JVM默认的classpath为.,即当前目录:
如果传入了-cp参数或在系统环境变量设置了classpath,还会搜索当前目录吗?
//看情况。如果这两个设置里没有'.'就不会搜索当前目录,有就会搜索
>在系统环境变量设置了classpath,运行时有传入了-cp参数,会怎样?
//只搜索-cp指定的
>为何不推荐设置系统环境变量classpath
//污染环境: 程序a需要aa.jar, 放入系统环境变量classpath. 程序b启动时,不需要aa.jar却也要去搜索遍历aa.jar里的class
//使用-cp符合程序设计的局部化理念
>java -jar target/test.jar
会把target/test.jar 作为classpath.
System.out.println(System.getProperty("java.class.path"));
输出的classpath是:target/test.jar