次のディレクトリ レイアウトがあります。プログラム フォルダーには、java、class、および pack フォルダーが含まれ、現在の場所は、a.java および b.java ファイルを含む program/java です。最初はクラスとパックには何も含まれていません。
b.java
package comm.domm;
public class b
{
public void bFu()
{
System.out.println("b function");
}
}
a.java
package com.dom;
import comm.domm.*;
class a
{
public static void main(String args[])
{
(new b()).bFu();
System.out.println("Utsab");
}
}
次に、program/java から次のコマンドを発行します。
javac -d ../pack b.java
javac -cp ../pack -d ../class a.java
pack の下に comm/domm を作成し、b.class を program/pack/comm/domm に配置し、com/dom を class の下に作成し、a.class を program/class/com/dom に配置します。
今、私が発行したのと同じ現在のディレクトリから、
java -cp ../class;../pack com.dom.a
今回は a.class を見つけることはできますが、b.class を見つけることはできません (ソース コードで説明されているように、a.class には b.class が必要です)。
javac -cp ../pack -d ../class a.java
b.class を見つけて a.class を作成できたのに、a.class を実行しようとしたときに b.class が見つからないのはなぜですか?? どのように見つけることができますか?b.class はコンパイル中に見つかりましたが、実行時には見つかりませんでした。なぜですか??