これは「SCJP 模擬試験」の出題例です。
デフォルトのクラスパスを考えると:
/foo
そして、このディレクトリ構造:
foo | test | xcom |--A.class |--B.java
そして、これらの 2 つのファイル:
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 を見つけられないのでしょうか?