| この記事の要点 |
|
エラーの状況
Eclipse で動的 Web プロジェクト(Dynamic Web Project)を開いたときに、問題ビューに以下のエラーが表示されます:
Description: ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。
org.apache.tomcat.InstanceManager のクラス・ファイルが見つかりません。
ビルド・パスを修正してから、プロジェクトの取り消しおよび再ビルドを行ってください。
Resource: (project name)
Path: (project path)
Location: 不明
Type: Java の問題
Eclipse が InstanceManager クラスを見つけられず、プロジェクト全体のビルドが失敗している状態です。同時に「型 org.apache.tomcat.InstanceManager を解決できません」が複数の Servlet クラスで出ます。
原因
org.apache.tomcat.InstanceManager は Tomcat のランタイム jar に含まれるクラスです(実体は $CATALINA_HOME/lib/tomcat-api.jar または tomcat-util.jar)。Eclipse は動的 Web プロジェクトに「ターゲット・ランタイム」として Tomcat を関連付けることで、このクラスをクラスパスに通します。
このエラーは以下の状況で発生:
- git clone した他人のプロジェクトを初めて開いたとき(最頻出)
- Eclipse に Tomcat ランタイムを登録していない
- 登録済み Tomcat のパスが無効(フォルダ移動・削除)
- プロジェクトのターゲット・ランタイムが選択されていない
- ワークスペースを別 PC からコピーしてきたとき
対処1: ターゲット・ランタイムを設定
プロジェクトを右クリックして プロパティ → ターゲット・ランタイムを開き、Tomcat にチェックを入れます。
| 手順 | 操作 |
|---|---|
| 1 | プロジェクト右クリック → プロパティ (Properties) |
| 2 | 左ペインから ターゲット・ランタイム (Targeted Runtimes) を選択 |
| 3 | 表示されている Tomcat (Apache Tomcat v9.0 など) にチェック |
| 4 | 適用して閉じる |
| 5 | プロジェクト右クリック → Maven → プロジェクトの更新 (Maven プロジェクトの場合) |
| 6 | プロジェクト右クリック → クリーン → ビルド |
対処2: ランタイム自体が登録されていない場合
「ターゲット・ランタイム」のリストが空、または Tomcat が表示されない場合は、Eclipse 側に Tomcat ランタイムを先に登録します。
ウィンドウ (Window) → 設定 (Preferences)
→ サーバー (Server)
→ ランタイム環境 (Runtime Environments)
→ 追加 (Add...) を押す
→ Apache → Apache Tomcat v9.0 (使うバージョン) を選択
→ 「次へ」
→ Tomcat installation directory にインストール先を指定
例: C:\apache-tomcat-9.0.85
Mac: /usr/local/Cellar/tomcat@9/9.0.85/libexec
→ JRE を選択
→ 「完了」
追加後、プロジェクトのプロパティに戻って先ほどの「対処1」を実行します。
対処3: Tomcat フォルダを移動した場合
「ランタイム環境」に Tomcat はあるけれど、Tomcat フォルダ自体を移動・削除した場合は、登録済み Tomcat の「編集 (Edit)」からインストールパスを正しいパスに直します。
確認
対処後、プロジェクトのプロパティ → Java のビルド・パス → ライブラリーを開くと、Apache Tomcat の jar 群が読み込まれていることを確認できます。Servlet クラスを開いて import org.apache.tomcat.InstanceManager; がエラーにならなければ解決です。
サーバービュー側からの確認
Eclipse 下部の サーバービュー (Servers) でも切り分けが可能です。表示されていない場合は ウィンドウ → ビューの表示 → サーバーで開きます。
- サーバービューに登録された Tomcat が 「停止」状態ならまだ問題ない
- サーバービュー自体が空なら 右クリック → 新規 → サーバーから追加
- 追加した Tomcat に右クリック → 追加と除去でプロジェクトをサーバーに登録
- サーバービューで Tomcat をダブルクリック → サーバーの場所が「Use Tomcat installation」になっていれば本物の Tomcat が使われる
Maven プロジェクトの場合
Maven プロジェクトでも同じ症状が出ます。pom.xml に Servlet API 依存を provided スコープで追加することでも代替可能です(Tomcat ランタイム関連付けと同等の効果):
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<!-- Tomcat 9 系(javax.servlet)の場合 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
provided スコープにすることで、デプロイ時には Tomcat 側の jar が使われ、ビルド時のみクラスパスに含まれるようになります(重複起因のエラーを避けられます)。
解決後に何度も再発する場合
| 症状 | 確認ポイント |
|---|---|
| Eclipse を再起動すると再発 | ワークスペースの破損 — 別ワークスペースで開き直す |
| 特定プロジェクトだけ再発 | .project / .classpath が古い → 削除して「Maven プロジェクトとしてインポート」 |
| 全プロジェクトで再発 | Eclipse のキャッシュ破損 — workspace/.metadata/ を退避してから再起動 |
| Servlet 5.x プロジェクトで発生 | Tomcat 10 系(jakarta.servlet)を使う必要あり。Tomcat 9 だと別エラー |
関連
- 同じ原因で「型
org.apache.tomcat.InstanceManagerを解決できません」も同時に発生する - Maven プロジェクトなら
pom.xmlの<dependency>に Servlet API がprovidedスコープで入っていることを確認 - Gradle なら
compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0'相当
関連情報
- 同じ原因で「型
org.apache.tomcat.InstanceManagerを解決できません」も発生 - Tomcat 10 系では
javax.servlet→jakarta.servletへパッケージ名が変更されている - Spring Boot 3 + 内蔵 Tomcat の場合は外部 Tomcat が不要なので、別の構成エラーを疑う
子ページはありません
- ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。org.apache.tomcat.InstanceManager のクラス・ファイルが見つかりません。ビルド・パスを修正してから、プロジェクトの取り消しおよび再ビルドを行ってください。
- 型 org.apache.tomcat.InstanceManager を解決できません。必要な .class ファイルから間接的に参照されています
- 要求されたリソースへのアクセスが拒否されました
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38