在Sierra/Bates SCJP书第 797 页中:
“java 和 javac [...] 首先查找包含 Java SE 标准类的目录。然后它们查找由类路径定义的目录”
Oracle 文档说明了相同的顺序。
(我知道我不应该这样做,但是......)为了测试这种行为,我在目录中实现了HashSet.java和Lol.java:C:\dev\cmdline\TestProject\sources\java\util
package java.util;
public class HashSet {}
Run Code Online (Sandbox Code Playgroud)
和
package java.util;
import java.util.HashSet;
public class Lol {
public static void main(String... x) {
HashSet a = new HashSet();
a.add("lol");
}
}
Run Code Online (Sandbox Code Playgroud)
执行时出现编译错误:C:\dev\cmdline\TestProject\sources>javac java/util/Lol.java
java\util\Lol.java:6: 错误: 找不到符号 a.add("lol"); ^符号:方法add(String)位置:HashSet类型的变量a
...这意味着首先使用默认的类路径(当前目录)。
那么,Oracle文档有错吗?您将如何测试类路径顺序?