在Java中设置类路径的不同方法
Java虚拟机 (JVM)使用类路径来定位类文件以执行代码。如果您的类路径未设置并且类文件与您的Java文件不在同一目录中,则 JVM 将无法找到所需的类文件,并且会抛出错误(Java.lang.ClassNotFoundException)。
设置类路径的方法
有五种不同的方法来设置类路径。这些都是:
- -cp
- -类路径
- --类路径
- 使用“set classpath”命令进行临时设置
- 使用环境变量窗口的永久设置
–cp , –classpath, –class - path方法的局限性在于只能为当前命令行设置classpath,在下一个命令行中,如果我们直接访问想要的类,我们会得到一个Exception
句法:
>java -cp
例子:
Java
// This code is located in F:\workspace\src
// It's class file is located in F:\workspace\bin
class GFG {
public static void main(String[] args)
{
System.out.println("GFG!");
}
}
命令行设置 -
>java -cp
或者
>java -classpath
或者
>java --class-path
- 如果我们想访问所有命令行的类路径,我们必须设置类路径命令选项。
- “设置类路径”命令选项的限制是类路径设置仅适用于当前命令提示符。
临时设置:
>set classpath=
如果我们想为所有命令提示永久设置类路径,我们必须在环境变量部分设置类路径。
永久设置:
- 首先,右键单击“这台电脑”。
- 单击属性。
- 点击“高级系统设置”。
- 单击“环境变量”。
- 在“用户变量部分”中,单击“新建”按钮。
- 输入变量名:classpath [Don't give space between class path] 变量值:
(例如在我的 F:\workspace\bin 中) - 单击确定->确定->确定。
- 关闭所有窗口,打开一个新的命令提示符,然后运行Java命令
我们必须包括.;在 classpath 开头,以便JVM可以分别访问当前工作目录和所需类文件的目录。
>java -cp <.;directory_location>
的重要性 '。'在类路径中
如果我们设置classpath指向一个目录,如果不放置(点),编译器和JVM将找不到当前工作目录中可用的类。 '。'表示当前工作目录。当前工作目录不是您保存 . Java文件,打开命令提示符的文件夹路径。
在类路径中包含多个路径的语法
我们必须用分号分隔符分隔每个文件夹位置。
java -cp ./folder1/*;./folder2/*;./folder3/* com.xyz.MainClass
Note – The algorithm followed by the compiler and JVM for finding classes from classpath is First Come First Execute.
路径和类路径搜索算法优先级的区别
- 命令提示符软件会优先显示工作目录。在当前工作目录中,如果二进制文件不可用,则只考虑路径变量。
- 编译器和JVM首先查找类路径。
- 如果没有创建类路径,那么只有他们会在当前工作目录中搜索。
- 如果创建了类路径,它们不会查看当前工作目录,而只会查看类路径文件夹。
Note – Generally in the Developer community, the first 4 types are recommended, they try to avoid using the permanent settings using the environment variable window.