2

これは理解するのに少し時間がかかるかもしれませんが、できるだけ簡単にしようとします。私は Netbeans で次のプロジェクトを持っています (罪のない人を保護するために名前を変更しました):

  1. コンポーネント1
  2. コンポーネント 2
  3. シンガー

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 にこれを強制する方法はありますか?

4

1 に答える 1

1

Thinger の Component2 に依存関係を追加するだけです。多くの場合、コンポーネントには、実行時に必ずしも必要ではなく (たとえば、オプションの機能である可能性があります)、ビルドのみに必要な依存関係があります。そのため、Thinger に追加の依存関係を追加するだけで問題ありません。

于 2012-04-08T18:34:06.557 に答える