对于我的生活无法理解classpath

ufo*_*ret 4 java javac classpath

请向我解释classpath,就像我10岁.

当我使用javac编译程序时,我通常会转到主类所在的根文件夹:

javac Test.java
Run Code Online (Sandbox Code Playgroud)

它编译程序和子目录中的所有类.对于上面的例子:

C:\newApp\ --->这是主类(Test.java)所在的文件夹.

C:\newApp\com\example\class --->这是其他一些类的文件夹.

javac使用该单个命令编译所有java文件.为他们制作.class文件.

现在我可以运行应用程序:

java Test
Run Code Online (Sandbox Code Playgroud)

什么是classpath?在这种情况下,classpath究竟是什么?我应该怎么知道classpath?使用IDE时,是否需要设置它?

ζ--*_*ζ-- 9

让我们假设你的命令提示符的当前目录是C:\newApp和类调用Test生命C:\newApp\Test.java.

类路径只是程序可能需要使用的位置或可以找到类文件的位置集.类路径包括文件夹,JAR和(在某些更复杂的设置中)其他类文件源.

当Java需要加载一个类时,它会在类路径中查找它.默认的类路径是包含Java的内置类的Jars集合,以及shell提示符的当前目录(C:\newApp在本例中).

当您尝试加载一个类时,比如说com.example.MyClass,Java将在您的类路径中查找该位置C:\newApp\com\example\MyClass.class.您可以通过将JAR放在类路径上来告诉它从JAR(只不过是带有.jar文件扩展名的ZIP存档)中获取类.它会查看jar内部并根据需要从那里"解压缩"类.

使用IDE时,通常不需要担心类路径.IDE将在运行时自动将您的代码自动放入类路径中.如果要使用外部库中的代码,只需要告诉IDE将其添加到项目中(通常将其放入项目文件夹并在文件列表中右键单击它).然后它会知道它的自动完成功能应该包含该Jar中的可用类,并且在运行项目时将Jar放在类路径上.