这是“SCJP 模拟考试”中的一个示例问题:
给定默认的类路径:
/foo
而这个目录结构:
foo | test | xcom |--A.class |--B.java
而这两个文件:
package xcom; public class A { } package xcom; public class B extends A { }
哪个允许 B.java 编译?(选择所有适用的。)
A.设置当前目录
xcom
然后调用javac B.java
B.设置当前目录
xcom
然后调用javac -classpath . B.java
C. 设置当前目录进行测试然后调用
javac -classpath . xcom/B.java
D. 设置当前目录进行测试然后调用
javac -classpath xcom B.java
E. 设置当前目录进行测试然后调用
javac -classpath xcom:. B.java
答案是C,我不明白.
那里的操作符的使用。请解释。
书上说:
为了
B.java
编译,编译器首先需要能够找到B.java
. 一旦找到B.java
,就需要找到A.class
。因为A.class
在xcom
A.class
包中,如果从xcom
目录中调用它,编译器将找不到。请记住,它-classpath
不是在寻找B.java
,而是在寻找任何B.java
需要的类(在这种情况下A.class
)。
我不明白,如果两个文件都在同一个包上,为什么编译器找不到 A?