0

次のディレクトリ レイアウトがあります。プログラム フォルダーには、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 はコンパイル中に見つかりましたが、実行時には見つかりませんでした。なぜですか??

4

2 に答える 2

1

これがタイプミスでない限り

javac -cp ../pack -d ../class b.java

あなたはまったくコンパイルa.javaしていません。あなたが持っている場合

javac -cp ../pack -d ../class a.java

代わりに、それは私のために働いていて、印刷されます

b function
Utsab

予想通り。

于 2013-09-24T15:35:36.257 に答える
0

私の論理は正しかったです。環境に問題がありました。環境を変更した後、何も変更せずにうまく機能しました....すべてに感謝します

于 2013-09-25T11:54:01.990 に答える