【发布时间】:2015-08-12 04:55:31
【问题描述】:
给定以下目录结构:
/top
|--- wrk
|--- pkg
|--- A.java
|--- B.java
假设A.java和B.java这两个文件分别包含以下代码:
// Filename: A.java
package pkg;
class A { B b; }
// Filename: B.java
package pkg;
class B {...}
假设当前目录为/top/wrk
为什么我们还没有编译B.java,命令javac -cp . pkg/A.java可以成功运行?
另外,如果当前目录是 /top/wrk/pkg,那么命令 javac A.java 有效。为何如此?
【问题讨论】:
-
答案就在docs.oracle.com/javase/8/docs/technotes/tools/windows/…。没有时间在这里以答案的形式重现这一点,简而言之,粗略地说:它还在类路径中查找源文件。
-
我无法重现这一点。它无法在我的机器上编译。你确定 B 从未被编译过吗?
-
这是一个 Mac / Windows 的东西。有关更多详细信息,请参阅我已编辑且现在(希望)确定的答案。