これは理解するのに少し時間がかかるかもしれませんが、できるだけ簡単にしようとします。私は Netbeans で次のプロジェクトを持っています (罪のない人を保護するために名前を変更しました):
- 芯
- コンポーネント1
- コンポーネント 2
- シンガー
Component1、Component2、Thinger はいずれも Core を必要とするため、ライブラリにそのプロジェクトへのリンクを含めます。
Thinger には Component1 も必要です。
Component1 には Component2 も必要です。
各プロジェクトは、独自にコンパイルされます (参照のみを使用)。ただし、Component1 内に Component2 のインスタンスを作成するとすぐに、実行時に次のエラーが発生します。
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: somepackage.stuff/Component2
すべてのプロジェクトが問題なくビルドされ続けていることを念頭に置いて、私は困惑しています。私はリフレクションを使用していません。これは、Component1 内に Component2 someVar = new Component2() 行を含めた場合にのみ発生します。これが起こる原因は何ですか?
更新 #1: Thinger のビルド中に Component2 の jar を取得していないようです。Netbeans にこれを強制する方法はありますか?