1

プロジェクト A はプロジェクト B に依存しています。

コンパイル時には、すべて問題ありません。

デバッグ時に、プロジェクト B のクラス bClass の静的関数が呼び出されると、NoClassDefFoundError が発生します。

実行時に、ExceptionInInitializerError が発生します。

さらに、bClass には静的初期化子があり、そこにブレーク ポイントを配置すると、そこに到達することはありません。これは私には非常に奇妙に思えますが、おそらくクラスが見つからないため意味があります。

修正方法はありますか?理解できる限り、すべての依存関係を確認しました。

4

2 に答える 2

1

NoClassDefFound例外の場合は、ランタイムクラスパスをコンパイル時クラスパスと照合して再確認してください。Eclipseは通常、ランタイムCPにコンパイル時のクラスパスを使用しますが、デフォルトの起動構成を変更した場合、それらは一致しなくなる可能性があります。

于 2010-09-27T18:41:58.127 に答える
0

静的イニシャライザが例外をスローすると、このような紛らわしくて誤解を招くような結果が得られることがよくあります。これを試してみてください: 静的​​初期化子にあるすべてのコードを try/catch ステートメントで囲み、catch ブロックで例外をログに記録します (エラー ログまたはコンソールに)。スローされている例外がある場合、これはそれを絞り込むのに役立ちます。

static {
    try {
        // ... your code here ...
    } catch (Throwable t) {
        t.printStackTrace();
    }
}

デバッグが完了したら、この try/catch 句を削除する必要があります。これは、例外を飲み込むためです。

于 2010-09-27T18:18:24.750 に答える