SCJP 6问题:classpath和当前目录

时间:2014-08-20 18:22:08

标签: java scjp

我正在接受SCJP 6并遇到如下问题。

Given:
2. import rt.utils.Remote;
3. public class Controller{
4. public static void main(String[] args){
5. Remote remote = new Remote();
6. } }
And rt.utils.Remote class is properly bundled into a JAR file called rtutils.jar.
And given the following steps:
P. Place rtutils.jar in the $ROOT directory.
Q. Extract rtutils.jar and put rt directory with its subdirectories in the $ROOT directory.
R. Extract rtutils.jar and place Remote.class in the $ROOT directory.
S. Place rtutils.jar in the $JAVA_HOME/jre/lib/ext directory.
X. Compile using: javac -cp rtutils.jar Controller.java
Y. Compile using: javac Controller.java
Z. Compile using: javac -cp . Controller.java

If Controller.java resides in the $ROOT directory, which set(s) of steps will compile the
Controller class? (Choose all that apply.)
A. P -> X
B. Q -> Y
C. R -> Z
D. P -> Z
E. R -> Y
F. S -> X
G. S -> Z

根据这本书,答案是A B F和G. 我没有得到正确的解释,证明这些答案是正确的。如果有人可以解释,将不胜感激。这是SE 6 Java。

1 个答案:

答案 0 :(得分:0)

答案A:步骤X在类路径中添加rtutils.jar,而Controller.java具有编译所需的所有要求。

答案B:由于未指定类路径(步骤Y),因此类路径由当前目录中的类文件组成,即$ ROOT目录。提取创建包rt.utils,因此,类路径上也可以使用所需的Remote.class。

答案C:编译Controller.java时,编译器会查找rt / utils / Remote.class文件。由于它已被移动到$ ROOT目录,编译将失败。

答案D:由于在步骤Z中指定了 -cp。,因此类路径由当前目录组成,即$ ROOT目录。但是,这不包括$ ROOT目录中的任何JAR文件。必须指定每个JAR文件,或*可用于包含所需的JAR文件。

答案E:与答案C相同

回答F:$ JAVA_HOME / jre / lib / ext中包含的JAR文件称为“已安装的扩展”,可在全球范围内使用。但是,它们不适合单个或少量应用程序使用。

答案G:与F

相同