对于我的生活无法理解classpath

时间:2015-07-05 20:10:38

标签: java classpath javac

请向我解释课程路径,就像我10岁那样。

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

javac Test.java

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

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

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

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

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

java Test

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

2 个答案:

答案 0 :(得分:8)

假设您的命令提示符的当前目录为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将被放置在类路径上。

答案 1 :(得分:2)

class-path通常是进程查找资源的路径列表(可以是类,可执行文件,XML文件或其他任何内容)。当您使用Eclipse之类的IDE时,通常会为您设置类路径,只要您包含IDE本身的所有内容(例如:添加外部jar交互)。

来自oracle:

  

类路径是Java运行时环境搜索类和其他资源文件的路径。可以在调用JDK工具(首选方法)时使用-classpath选项或通过设置CLASSPATH环境变量来设置类搜索路径(更常见的是较短名称“类路径”)。 -classpath选项是首选,因为您可以为每个应用程序单独设置它,而不会影响其他应用程序,也不会修改其值的其他应用程序。

这是在类路径中设置多个文件夹以查找目录C:\java\MyClasses中的类文件以及C:\java\OtherClasses中的类的链接示例:

C:> java -classpath C:\java\MyClasses;C:\java\OtherClasses ...