2012-01-04 9 views
3

私は2つのクラス(以下に示す)があるとします。今、私がコマンドラインからjavac.exeを使ってそれらをコンパイルしていると想像してください。クラスAにはクラスBのメソッドが存在する必要があり、その逆もあります。コマンドラインからコンパイルする方法はありますか? (Eclipseはこれを問題なくコンパイルすることができます!)コマンドラインからコンパイルするWth循環依存性

私はそれらが現在2つの別々の.javaファイルに追加されているはずです。

public class A { 
    public void doAWork() { /* A work goes here. */} 
    public void doBWork() { new B().doBWork(); } 
} 
public class B { 
    public void doBWork() { /* B work goes here. */} 
    public void doAWork() { new A().doAWork(); } 
} 
+2

私にとっては、次のようにコンパイルすると完全に動作します: 'javac A.java B.java' – AbdullahC

+2

同時にコンパイルできることを確認する必要があります。 –

答えて

4

あなたの問題は他の場所のようです。

私は完全に次のコマンドを使用してJava 1.5、1.6および1.7でコードをコンパイルすることができます

javac A.java B.java 

でもB.javaが同じディレクトリにあるため、単一のファイル名は、完璧に動作します提供:

javac A.java 

2つのファイルが適切なディレクトリに置かれていますか?

+0

ええ、私はそれを試していなかった。します。この問題は実際には私が一度に1つずつスクリプトでコンパイルしているたくさんのファイルを含むもっと大きなプロジェクトに現れます。循環依存がポップアップしてCDを削除する前に、私はCDを残すためのコンパイラのトリックがあるのだろうかと疑問を抱いていました。明らかに、これはコマンドラインから行う方法です。再度、感謝します。 –

+0

コマンドラインで一度に1つずつコンパイルできますか?それから、私は何か間違っているかもしれない。私はもっ​​と深く見ていきます。 –

+0

ご返信ありがとうございます。それは正しい方向に私を導いた。コマンドはソースファイルの場所以外のディレクトリで実行されていたため、javac.exeのクラスパス引数にソースファイルディレクトリを追加する必要がありました。 –

関連する問題