FaqCompileDependencyJa

一つのクラスに互換性のない変更を加えた後、何か壊れたか見るために 生成物を削除して構築 する必要がありますか?

NetBeans 4/5.5 プロジェクトは、既定ではコンパイルの際に“依存関係の追跡”は行いません。これは、あなたが次のように始めて、

public class Main {
    public static void main(String[] args) {
        System.out.println(new X().message());
    }
}
// ...
public class X {
    public String message() {
        return "hello world";
    }
}

X.java を次のように編集して

public class X {
    public String message2() {
        return "hello world";
    }
}

主プロジェクトを実行 をクリックすると、プログラムは実行しますが NoSuchMethodError で失敗します。これは X.java は再コンパイルされて Main.java はされないからです。

あなたはこれに対して何ができるでしょうか?

  1. 前述の事例では、簡単に リファクタリング | 名前の変更 を使用して、メソッドとその使用の名前を変更できます。しかし、すべて種類の指紋変更で可能というわけではありません。
  1. 主プロジェクトの生成物を削除して構築 を指紋変更の後に実行して、すべてのクラスが確実に再コンパイルされるようにできます。この場合、コンパイルは Main.java 内のエラーで失敗し、あなたはそれを修正できます。しかし、しかし、大きなプロジェクトでは生成物を削除してから構築すると遅くなるかもしれず、またあなたはそれを忘れるかもしれません。
  1. この種の変更を自動的に検出し Main.java を再コンパイルするようにプロジェクトを構成することもできます。ファイル タブで build.xml を開き、新しいターゲットを追加します:
    <target name="-pre-compile">
        <depend srcdir="${src.dir}" destdir="${build.classes.dir}" classpath="${javac.classpath}" cache="${build.dir}/depcache"/>
    </target>

(このターゲットを追加した後は一度生成物を削除して構築し、依存関係キャッシュを準備します。)

主プロジェクトの生成物を削除して構築 はそれでもすべてを再コンパイルし、常に安全です。しかし、単に 主プロジェクトを構築 するだけでも編集したクラスに直接依存するクラスを再コンパイルするはずです。同様に、主プロジェクトを実行 による構築でも影響されるかもしれないクラスを取り上げ再コンパイルするはずです。

NetBeans は既定でこのようにプロジェクトを構成するようになります。

http://www.netbeans.org/issues/show_bug.cgi?id=36033


バージョン: NetBeans 5.0

---

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo