我第一次在Mac上安装Java(jdk 10.0.2 SE),我在macOS 10.13.6上。我只是在我的主目录中创建了一个基本的Hello World程序,编译并运行它,但是我没有在我的CLASSPATH环境变量上设置任何东西,除了当前目录“.”我的问题是我如何能够编译和运行这个程序?它是如何从Java库中找到类的呢?我一直假设我需要设置这个变量,并且我将它设置为Windows中的jdk安装目录。
gzjq41n41#
我们为什么要设置类路径?CLASSPATH是一个环境变量,包含jar文件的路径和各种包的路径。KISS回答您的问题:也许成功执行代码的原因是JVM首先检查当前目录是否有jar文件,然后再检查类路径,所以当前目录中有这些文件。哦,你可能会奇怪为什么我们要设置类路径。设置类路径会覆盖默认路径。
au9on6nz2#
让我们以sample code为例,说明为什么必须在Java中设置类路径如果您在图像中看到此示例,则示例程序将List转换为Map1.创建了新的ArrayList和Map,使用流将列表转换为Map。ArrayList和Map是ADT(抽象数据类型),它来自JDK的一部分,我们正在使用它们。如果仔细看,在我们的应用程序中,我们导入了这些类。(这些类在JDK安装位置可用)当您安装JDK时,在JRE core classes files下,这些所有核心.class文件都将以rt.jar的形式提供。当我们编译实际代码时,它依赖于(ArrayList类和Map类)。如果你没有告诉(通过设置路径)这些类在特定位置(C:\Program Files\Java\jdk1.8.0_361\jre\lib)可用。JVM无法读取这些依赖项。这就是为什么在Java中必须设置类路径的原因。就这么简单:-)
2条答案
按热度按时间gzjq41n41#
我们为什么要设置类路径?
CLASSPATH是一个环境变量,包含jar文件的路径和各种包的路径。
KISS回答您的问题:
也许成功执行代码的原因是JVM首先检查当前目录是否有jar文件,然后再检查类路径,所以当前目录中有这些文件。
哦,你可能会奇怪为什么我们要设置类路径。设置类路径会覆盖默认路径。
au9on6nz2#
让我们以sample code为例,说明为什么必须在Java中设置类路径
如果您在图像中看到此示例,则示例程序将List转换为Map
1.创建了新的ArrayList和Map,使用流将列表转换为Map。
ArrayList和Map是ADT(抽象数据类型),它来自JDK的一部分,我们正在使用它们。
如果仔细看,在我们的应用程序中,我们导入了这些类。(这些类在JDK安装位置可用)
当您安装JDK时,在JRE core classes files下,这些所有核心.class文件都将以rt.jar的形式提供。
当我们编译实际代码时,它依赖于(ArrayList类和Map类)。如果你没有告诉(通过设置路径)这些类在特定位置(C:\Program Files\Java\jdk1.8.0_361\jre\lib)可用。JVM无法读取这些依赖项。
这就是为什么在Java中必须设置类路径的原因。
就这么简单:-)