总结一下classpath

今天好好研究了一下Java的classpath,什么是classpath呢?classpath就是我们输入

java xxx

的时候Java执行环境搜索xxx类文件的路径。指定这个路径有两种方式,第一种是在我的电脑里面设置环境变量classpath或在命令行里面用

set classpath=xxxxxxx

设置,这两个方法的效果是一样的所以归类为第一种(只不过在命令行里面设置的是临时的,仅对此命令窗口有效)

第二种如下:

java -cp ./b xxx

这种方式将在当前目录的b文件夹里面找到xxx.class文件并加载进来。

第一种方法有个需要注意的地方,

set classpath=xxxxxxx

set classpath=xxxxxxx;//这行多了个分号

是不一样的,第二行多了个分号,效果就是让Java执行环境先在xxxxxx目录搜索类文件然后再从当前目录搜索类文件。而没有分号就是让Java执行环境只在xxxxxx目录搜索类文件,如果xxxxxx目录没有搜索的类文件,而当前目录有这个要搜索的类文件,那么依然会报错。

总结一下,当没有在我的电脑里面设置环境变量classpath或在命令行里面用

set classpath=xxxxxxx

设置classpath,或者是没有明确指定-cp选项的时候,Java执行环境仅从当前目录搜索类文件

当两者中有一个设置(指定)时仅从设置(指定)的目录搜索类文件,而不搜索当前目录(如果两者里面没有包含当前目录的话)

若两者同时设置和指定则忽略classpath,只使用-cp选项指定的目录,而不搜索当前目录(如果两者里面没有包含当前目录的话)

原文地址:https://www.cnblogs.com/xxNote/p/4160489.html