Eclipseの動的Webプロジェクトから別プロジェクト(自作ライブラリ)を参照する

あらすじ

  • 同じワークスペース上にあるsampleプロジェクトからutilプロジェクトのメソッドを呼び出しているソースがある
  • ビルドは通っているが、実際に該当ロジックを動作させた時にClassNotFoundExceptionあるいはNoClassDefFoundErrorが出る

環境

  • Eclipse 4.7
  • WAS Liberty 19.0.0.1

本文

  • ビルド・パスを通しただけだったのでWTP起動時に依存プロジェクトを一緒に配備できていなかった
  • プロジェクト右クリック -> プロパティ -> デプロイメント・アセンブリー(Deployment Assembly)
    • 呼び出し先のプロジェクトを追加する。(古いEclipseだとJava EE Module Dependencies)
  • ビルドして再び実行するとうまくいった。
  • sampleプロジェクトの.projectファイルに以下の値が追加されていた。
<projects>
  <project>util</project>
</projects>
  • 「問題」タブには警告は出てない(多すぎてカットされている?)
  • 「マーカー」タブには警告がバッチリ出てた

クラスパス・エントリー /util は、エクスポートまたは公開されません。実行時に ClassNotFoundExceptions が発生する可能性があります。 sampleP/sampleクラスパス依存性バリデーター・メッセージ

参考