Java类路径中的点(。)有什么作用?

and*_*and 4 java scjp javac classpath

这是“ SCJP模拟考试”中的一个示例问题:

给定默认的类路径:

/ foo

而这个目录结构:

foo
  |
 test
    |
   xcom
     |--A.class
     |--B.java
Run Code Online (Sandbox Code Playgroud)

和这两个文件:

package xcom;
public class A { }
package xcom;
public class B extends A { }
Run Code Online (Sandbox Code Playgroud)

哪个允许B.java进行编译?(选择所有适用项。)

A.设置当前目录xcom然后调用

javac B.java
Run Code Online (Sandbox Code Playgroud)

B.设置当前目录xcom然后调用

javac -classpath . B.java
Run Code Online (Sandbox Code Playgroud)

C.设置当前目录进行测试然后调用

javac -classpath . xcom/B.java
Run Code Online (Sandbox Code Playgroud)

D.设置当前目录进行测试然后调用

javac -classpath xcom B.java
Run Code Online (Sandbox Code Playgroud)

E.设置当前目录进行测试然后调用

javac -classpath xcom:. B.java
Run Code Online (Sandbox Code Playgroud)

答案是C,我不明白.那里的运算符的用法。请解释。

这本书说:

为了进行B.java编译,编译器首先需要能够找到B.java。一旦找到B.java,就需要找到A.class因为A.classxcom软件包中,编译器无法找到A.class是否从xcom目录中调用了它。请记住,-classpath不是在寻找B.java,而是在寻找类B.java需要的任何东西 (在这种情况下A.class)。

我不明白这一点,如果两个文件都在同一个包中,为什么编译器找不到A?

Boz*_*zho 5

点表示“当前目录”。如果从内部调用javac xcom,则它将A.class在中xcom/xcom/A.class查找,但找不到。