我一辈子都无法理解类路径
Can't understand classpath for the life of me
请像我 10 岁一样向我解释 class路径。
当我用javac编译程序时,我通常会去主class所在的根文件夹:
javac Test.java
它编译程序和子目录中的所有 classes。对于上面的例子:
C:\newApp\
---> 这是主要 class (Test.java) 所在的文件夹。
C:\newApp\com\example\class
---> 这是其他 classes 所在的文件夹。
javac 使用该命令编译所有 java 文件。为他们制作 .class 文件。
现在我可以 运行 应用程序:
java Test
什么是class路径?在这种情况下 classpath 到底是什么?关于 classpath 我应该了解什么?使用IDE时,需要设置吗??
让我们假设您的命令提示符的当前目录是 C:\newApp
并且一个名为 Test
的 class 位于 C:\newApp\Test.java
.
class路径只是可以找到 class 文件的位置或一组位置,您的程序可能需要使用这些位置。 class路径包括文件夹、JAR 和(在某些更复杂的设置中)其他 class 文件来源。
当 Java 需要加载 class 时,它会在 class 路径中寻找它。默认的 classpath 是包含 Java 内置 classes 的一组 Jar,结合 shell 提示符的当前目录(C:\newApp
在这种情况下)。
当您尝试加载 class 时,说 com.example.MyClass
,Java 将在您的 class 路径中查找 C:\newApp\com\example\MyClass.class
位置。您可以通过将所述 JAR 放在 class 路径上来告诉它从 JAR(无非是具有 .jar 文件扩展名的 ZIP 存档)中获取 class。它会查看罐子内部,并根据需要从那里 "unzip" classes。
使用 IDE 时,您通常不需要担心 class 路径。当 运行 时,IDE 会自动将 你的 代码自动放入 class 路径中。如果你想使用来自外部库的代码,你只需要告诉你的 IDE 将它添加到项目中(通常是将它放入你的项目文件夹并在文件列表中右键单击它)。然后它会知道它的自动完成功能应该包括来自那个 Jar 的可用 classes, 和 当 运行 你的项目。
A class-path 通常是进程查找资源的路径列表(可以是 classes、可执行文件、XML 文件或其他任何东西)。当您使用诸如 Eclipse 的 IDE 时,通常会为您设置 class 路径,只要您包含 IDE 本身的所有内容(例如:添加外部 jars 交互)。
来自甲骨文:
The class path is the path that the Java runtime environment searches for classes and other resource files. The class search path (more commonly known by the shorter name, "class path") can be set using either the -classpath option when calling a JDK tool (the preferred method) or by setting the CLASSPATH environment variable. The -classpath option is preferred because you can set it individually for each application without affecting other applications and without other applications modifying its value.
这是 link 中的示例,在 class 路径中设置多个文件夹,以在目录 C:\java\MyClasses
中查找 class 文件以及 classes 在 C:\java\OtherClasses
:
C:> java -classpath C:\java\MyClasses;C:\java\OtherClasses ...
请像我 10 岁一样向我解释 class路径。
当我用javac编译程序时,我通常会去主class所在的根文件夹:
javac Test.java
它编译程序和子目录中的所有 classes。对于上面的例子:
C:\newApp\
---> 这是主要 class (Test.java) 所在的文件夹。
C:\newApp\com\example\class
---> 这是其他 classes 所在的文件夹。
javac 使用该命令编译所有 java 文件。为他们制作 .class 文件。
现在我可以 运行 应用程序:
java Test
什么是class路径?在这种情况下 classpath 到底是什么?关于 classpath 我应该了解什么?使用IDE时,需要设置吗??
让我们假设您的命令提示符的当前目录是 C:\newApp
并且一个名为 Test
的 class 位于 C:\newApp\Test.java
.
class路径只是可以找到 class 文件的位置或一组位置,您的程序可能需要使用这些位置。 class路径包括文件夹、JAR 和(在某些更复杂的设置中)其他 class 文件来源。
当 Java 需要加载 class 时,它会在 class 路径中寻找它。默认的 classpath 是包含 Java 内置 classes 的一组 Jar,结合 shell 提示符的当前目录(C:\newApp
在这种情况下)。
当您尝试加载 class 时,说 com.example.MyClass
,Java 将在您的 class 路径中查找 C:\newApp\com\example\MyClass.class
位置。您可以通过将所述 JAR 放在 class 路径上来告诉它从 JAR(无非是具有 .jar 文件扩展名的 ZIP 存档)中获取 class。它会查看罐子内部,并根据需要从那里 "unzip" classes。
使用 IDE 时,您通常不需要担心 class 路径。当 运行 时,IDE 会自动将 你的 代码自动放入 class 路径中。如果你想使用来自外部库的代码,你只需要告诉你的 IDE 将它添加到项目中(通常是将它放入你的项目文件夹并在文件列表中右键单击它)。然后它会知道它的自动完成功能应该包括来自那个 Jar 的可用 classes, 和 当 运行 你的项目。
A class-path 通常是进程查找资源的路径列表(可以是 classes、可执行文件、XML 文件或其他任何东西)。当您使用诸如 Eclipse 的 IDE 时,通常会为您设置 class 路径,只要您包含 IDE 本身的所有内容(例如:添加外部 jars 交互)。
来自甲骨文:
The class path is the path that the Java runtime environment searches for classes and other resource files. The class search path (more commonly known by the shorter name, "class path") can be set using either the -classpath option when calling a JDK tool (the preferred method) or by setting the CLASSPATH environment variable. The -classpath option is preferred because you can set it individually for each application without affecting other applications and without other applications modifying its value.
这是 link 中的示例,在 class 路径中设置多个文件夹,以在目录 C:\java\MyClasses
中查找 class 文件以及 classes 在 C:\java\OtherClasses
:
C:> java -classpath C:\java\MyClasses;C:\java\OtherClasses ...