タイトル: サーバーに追加または除去できるリソースがありません。
SEOタイトル: Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
| この記事の要点 |
|---|
|
エラー内容
|
サーバーに追加または除去できるリソースがありません。 |
このエラーの意味
Eclipse の「サーバー」タブで Tomcat にプロジェクトを追加しようとしたときに、そのプロジェクトが Tomcat に載せられる Web アプリとして認識されていない 場合に出やすいエラーです。
起きやすい原因
- プロジェクトに 動的 Web モジュール の facet が付いていない
- Tomcat を Targeted Runtime として関連付けていない
- Java / Servlet / Tomcat の組み合わせが合っていない
- Maven / Gradle プロジェクトが WTP と正しく連携していない
- Server view 側のキャッシュが壊れている
まず確認すること
1. プロジェクト・ファセットを確認する
プロジェクトを右クリックして プロパティ を開き、プロジェクト・ファセット を確認します。
少なくとも次を見ます。
- Java にチェックが入っているか
- 動的 Web モジュール にチェックが入っているか
- バージョンが使いたい Tomcat と合っているか
2. Targeted Runtimes を確認する
Targeted Runtimes で対象の Apache Tomcat にチェックが入っているか確認します。ここが外れていると、Web プロジェクトでもサーバーへ追加できないことがあります。
3. Web アプリとして必要な構成があるか確認する
通常の Java プロジェクトとして作ってしまっている場合、Tomcat へ載せる前提の構成が足りません。必要に応じて 動的 Web プロジェクト として作り直すか、facet を追加します。
対処手順
- プロジェクトを右クリック → プロパティ
- プロジェクト・ファセット を開く
- Java と 動的 Web モジュール にチェックを入れる
- Runtimes または Targeted Runtimes で対象 Tomcat を選ぶ
- 必要なら web.xml デプロイメント記述子の生成 を有効にする
- Server view から一度プロジェクトを外し、再度追加する


バージョン不整合の考え方
大事なのは「Java のバージョン」「Dynamic Web Module のバージョン」「Tomcat が対応する Servlet API のバージョン」が噛み合っていることです。
細かい組み合わせは使用中の Eclipse / Tomcat / フレームワークによって変わるため、数字を暗記するより、Tomcat がどの Servlet API 世代に対応しているか を基準に確認する方が安全です。
Maven / Gradle プロジェクトで直らない場合
Maven や Gradle のプロジェクトでは、WTP 連携が不十分だと facet を付けても認識が不安定なことがあります。その場合は次も確認してください。
- Maven なら m2e-wtp の設定や Project Facets の再同期
- Gradle なら Eclipse 用設定の再生成
- Project > Clean の実行
- Server の再作成
それでも直らない時の確認順
- そのプロジェクトは本当に Web アプリとして動かす構成か
- Targeted Runtime に Tomcat が設定されているか
- facet と Tomcat のバージョンが噛み合っているか
- Eclipse のキャッシュや Server 設定が壊れていないか
まとめ
このエラーは、Tomcat 側の問題というより、Eclipse がそのプロジェクトを配備可能な Web アプリと認識できていない ときに起きることが多いです。まずは Project Facets と Targeted Runtimes を確認し、その後にバージョン整合性を見直す流れが最短です。