私は Eclipse 3.7.2 でたくさんのプロジェクトを作成しました。それらのいくつかに名前を付けましょう。
- W (動的 Web プロジェクト)
- A (いくつかのライブラリ)
- B (他のプロジェクトでも使用されている、多くの一般的なものを含むライブラリ)
プロジェクト A はプロジェクト B に依存しているため、B は A のビルド パスにあります。プロジェクト W はプロジェクト A に依存しているため、A を展開アセンブリとして W に追加しました。
Eclipse 内から WAR をエクスポートすると、A の JAR ファイルのみが WEB-INF/lib に追加されます。Eclipse は次の警告を表示します。
クラスパス エントリ /B はエクスポートまたは公開されません。ランタイム ClassNotFoundExceptions が発生する場合があります。
警告は正しいです。実行時に ClassNotFoundExceptions が発生します。もちろん、Eclipse は、「関連する生のクラスパス エントリをパブリッシュ/エクスポートの依存関係としてマークする」という警告に対するクイック フィックスを提供します。ただし、これで問題は解決しません。B はまだ W でデプロイされません。
A に B を Deployment Assembly として手動で追加しようとしました。これには、A.jar 内の B.jar が含まれていますが、これは私が本当に望んでいるものではなく、ClassNotFoundExceptions が引き続き発生します。
機能する唯一のことは、B を W の Deployment Assembly として手動で追加することです。Eclipse には上記の警告が引き続き表示されますが、実行時例外はなくなります。
私は何かが欠けていますか、それともこれが本当にこれを機能させる唯一の方法ですか?