Class Path是一个基本的概念,对我们许多人都忽略了,尤其是在使用Intellij Idea等现代IDE时;我们不必担心班级路径或其他细节来运行程序。但是,对于任何Java开发人员来说,都必须知道课堂路径是什么,以及为什么要了解JVM如何找到我们班级的依赖性以及如何找到我们的班级。
简而言之,当执行程序时,类路径将帮助Java找到我们类存在的位置。请记住,在编译程序时将生成.class文件的列表。 ClassPath需要指定这些类文件的位置,以便JVM可以查找它们以查找我们的类(因为它无法查看计算机的每个文件)来执行程序。如果您熟悉OS中的环境变量,则可以考虑确定可执行文件位置的路径变量,而类Pather变量决定Java类和软件包的位置。
假设我们有一个名为TestedClass.java的类中存在于com.learntocodetogether.example.classpath包中的类:
package com . learntocodetogether . example . classpath ;public class TestedClass {}我们将编译我们的程序,并将编译的TestedClass.class文件放在build文件夹中。而且,由于每一层软件包都是一个文件夹,因此我们的TestedClass.class将驻留在该软件包中的build/com/learntocodetogether/example/classpath/TestedClass.class和其他文件中(如果我们有)。现在,为了找到JVM,可以找到TestedClass.class文件,我们的类路径需要包含build目录。接下来,我们要向我们的TestedClass引入依赖性,另一个类位于另一个软件包上:
package com . learntocodetogether . example . classpath ;import test . example . glitter . Shine ;public class TestedClass {}假设Shine.java类也将被编译到build文件夹中; JVM可以查找build/test/example/glitter/Shine.class以找出我们在TestedClass中的依赖性。
另外,您可以在类路径中指定jar文件。例如,我们使用一些构建工具将我们的Shine类(这是TestedClass Class中的依赖性)包装到lib文件夹中,并将其命名为dependency.jar并从我们的目录中删除此类。在我们的TestedClass源代码中,如果我们使用某些IDE(例如Intellij Idea),它可能会导致一些错误,这些错误告诉我们该文件不存在,或者我们需要将jar文件添加到ClassPath中。
在我们的同类课程中,我们需要将dependency.jar添加到我们的类路径中,JVM将查看此jar文件以确定Shine的位置,我们的TestedClass Class依赖。
如何设置类Path变量?
我们可以使用几种选择来设置类Path的变量,最多被采用的是类java -cp < path of your class> ,我们可以使用: operator(in Unix -like os)分离我们的classPath,最后一个参数指定了我们的主要类:
java - cp " /path/to/our/class:/another/path/to/our/class:/glitter/path/to/class " TestedClass
我们还可以将类Path变量设置为环境变量,但是这种方法不推荐使用(也在Unix型机器中):
export CLASSPATH ="/path/to/our/class:/another/path/to/our/class:/glitter/path/to/class"
另一种方法是让IDE为您做到这一点。在某些现代IDE中运行我们的程序,例如Intellij Idea,会在需要时自动为我们设置所有必要的类路径。