web-dev-qa-db-ja.com

Tomcatは、他の開いているEclipseプロジェクトのクラスに対してClassNotFound例外をスローします

私は次のようなEclipseプロジェクト構造を持っています:

Eclipse
    project a
    project b

これらのプロジェクトはすべてMavenプロジェクトです。プロジェクトBはEclipseWTPプロジェクトであり、依存関係としてプロジェクトAが含まれています。私はm2Eclipseプラグインを使用しています。

プロジェクトBをTomcatに(すべてEclipse内から)デプロイすると、常にプロジェクトAからクラスが見つからないというエラーがスローされます。これを解決できる唯一の方法は、EclipseでcloseプロジェクトAにすることです。 mvn installコマンドを実行すると、この時点でプロジェクトAは他の依存関係と同様に扱われます。

プロジェクトAに変更を加えるたびに、プロジェクトAを再度開いてから閉じ続ける必要はありません(この段階ではかなり頻繁に発生します)。

プロジェクトBのビルドパスにプロジェクトAを追加しようとしましたが、それでうまくいくようには見えません。繰り返しますが、Eclipseでプロジェクトを閉じた場合にのみ機能するため、通常のmaven依存関係のように扱われます。

参考までに、私はEclipseのHeliosバージョンを使用しています。プロジェクトBはSpringプロジェクトであるため、TomcatはすべてのBeanなどをインポートするときに当然フォールオーバーします。

誰か提案がありますか?どうもありがとう。

22
Ben J

Tomcatがクラスを見つけられない理由は、Eclipseでのプロジェクトの依存関係がTomcatによって認識されないためです。この問題を解決するには、プロジェクトaのbinフォルダーを、プロジェクトbから実行しているアプリのTomcatクラスパスに追加します。

5
rsp

あなたがする必要があるのはこれです:

  1. Eclipseで、[ウィンドウ]> [ビューの表示]> [サーバー]に移動し、[サーバー]というタブを開きます。
  2. サーバーで、目的のサーバーをダブルクリックします。
  3. このアクションにより、「概要」というウィンドウが開き、選択したサーバーがタブに表示されます。
  4. このウィンドウで、「起動構成を開く」を選択し、リンクをクリックします。
  5. [構成の編集]ウィンドウで、[クラスパス]というタブを選択します
  6. ClassPathテキストボックスで、次の行を選択します。ユーザーエントリ
  7. 次に、右側のボタン「プロジェクトの追加」を押します。
  8. 表示される[プロジェクトの選択]ウィンドウで、サーバーがクリックして検索する外部プロジェクトを選択します。
  9. スタックを処理しながら、必要に応じて[適用]、[OK]の順にクリックしてこれらのウィンドウを閉じます
  10. 「概要」ウィンドウでサーバーを再起動します

あなたは行く準備ができているはずです。実際には2分のエクササイズだけです。幸運を

76
Jalkin

プロジェクトのプロパティに移動し、[Deployment Assembly]を選択し、[Add ...]をクリックして[Project]を選択すると、依存プロジェクトを追加でき、問題は解決するはずです。

33
Thomas

コンテナサーバーに追加されたWebプロジェクトを右クリックし、[Maven]を選択してから、[ワークスペースの解決を無効にする]を選択します。次に、依存関係プロジェクトが他の依存関係と同様にjarとして表示されます。

WebProject-> Maven-> Disable Workspace Resolutionを右クリックします。

5

WTPを知っているm2Eclipse拡張機能をインストールしましたか?これがないと、m2eはWTPプロジェクトで正しく機能しません。これを参照してください:

https://docs.sonatype.org/display/M2Eclipse/WTP+mini+howto

簡単な方法:

Run -> Run Configurations... -> Classpath

0
Mehdi LAMRANI