Java 没有';设置类路径变量为什么程序也可以运行

Java 没有';设置类路径变量为什么程序也可以运行,java,classpath,Java,Classpath,我在我的计算机上安装了JDK7。我只是这样指定了路径: import java.io.File; public class Hello_1 { public static void main(String[] args) { System.out.println(File.separator); } } 我没有设置类路径 我写了一个测试程序,程序是这样的: import java.io.File; public class Hello_1 { pu

我在我的计算机上安装了JDK7。我只是这样指定了路径:

import java.io.File;

public class Hello_1 {
    public static void main(String[] args) {
        System.out.println(File.separator);
    }
}

我没有设置类路径

我写了一个测试程序,程序是这样的:

import java.io.File;

public class Hello_1 {
    public static void main(String[] args) {
        System.out.println(File.separator);
    }
}
我遵从了它,并像这样运行它:

import java.io.File;

public class Hello_1 {
    public static void main(String[] args) {
        System.out.println(File.separator);
    }
}

根据结果,我们可以看到它没有任何错误。我很困惑。我没有设置类路径,根据ORACLE文档,它说:

类路径的默认值为“”,这意味着只有 搜索当前目录。指定类路径 变量或-cp命令行开关覆盖此值


如果我没有设置CLASSPATH变量,默认的类路径是“.”,所以当我编译Hello_1.java时,它只搜索当前目录中的java.io.File,而java.io.File没有任何内容,所以它会抛出异常。但是为什么它工作得很好呢

您已将JDK bin的路径放入path变量中。因此,现在您的操作系统知道java/javac是命令,因此您可以运行代码。如果源代码或库位于当前目录以外的其他目录中,则类路径将出现。

类路径用于搜索您自己的类,但内置类库将自动可用,无需添加到类路径中。因此,
Hello_1
位于默认类路径(当前目录)上,而
java.io.File
位于内置类库中。

java查找其核心库(rt.jar),而不考虑设置的类路径。事实上,我从来没有设置过类路径,我更喜欢为每个应用程序安装适当的-cp,如果需要我在c:\program files\java中找到的JDK7有两个rt.jar,一个放在c:\program files\java\jdk1.7.0\U 45\jre\lib中,另一个放在c:\program files\java\jre7\lib中,对于这两个,javac.exe或java.exe是如何决定的?