1.

Eclipse「org.apache.tomcat.InstanceManager のクラス・ファイルが見つかりません」対処

編集
この記事の要点
  • ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。org.apache.tomcat.InstanceManager のクラス・ファイルが見つかりません
  • 原因: Eclipse の動的 Web プロジェクトに Tomcat ランタイムが関連付けられていない
  • 対処1: プロジェクト右クリック → プロパティ → ターゲット・ランタイムで Tomcat にチェック
  • 対処2: ターゲット・ランタイム自体が空なら、ウィンドウ → 設定 → サーバー → ランタイム環境で Tomcat を追加
  • 対処後にプロジェクトを右クリック → Maven → 更新 / プロジェクトのクリーンを実行

エラーの状況

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.InstanceManagerTomcat のランタイム 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; がエラーにならなければ解決です。

関連

  • 同じ原因で「org.apache.tomcat.InstanceManager を解決できません」も同時に発生する
  • Maven プロジェクトなら pom.xml に Servlet API が provided スコープで入っていることを確認
  • Gradle なら compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0' 相当

サーバービュー側からの確認

Eclipse 下部の サーバービュー (Servers) でも切り分けが可能です。表示されていない場合は ウィンドウ → ビューの表示 → サーバーで開きます。

  • サーバービューに登録された Tomcat が 「停止」状態ならまだ問題ない
  • サーバービュー自体が空なら 右クリック → 新規 → サーバーから追加
  • 追加した Tomcat に右クリック → 追加と除去でプロジェクトをサーバーに登録
  • サーバービューで Tomcat をダブルクリック → サーバーの場所が「Use Tomcat installation」になっていれば本物の Tomcat が使われる

Maven プロジェクトの場合

Maven プロジェクトでも同じ症状が出ます。pom.xml に Servlet API 依存を provided スコープで追加することでも代替可能です(Tomcat ランタイム関連付けと同等の効果):


    jakarta.servlet
    jakarta.servlet-api
    6.0.0
    provided




    javax.servlet
    javax.servlet-api
    4.0.1
    provided

provided スコープにすることで、デプロイ時には Tomcat 側の jar が使われ、ビルド時のみクラスパスに含まれるようになります(重複起因のエラーを避けられます)。

解決後に何度も再発する場合

症状確認ポイント
Eclipse を再起動すると再発ワークスペースの破損 — 別ワークスペースで開き直す
特定プロジェクトだけ再発.project / .classpath が古い → 削除して「Maven プロジェクトとしてインポート」
全プロジェクトで再発Eclipse のキャッシュ破損 — workspace/.metadata/ を退避してから再起動
Servlet 5.x プロジェクトで発生Tomcat 10 系(jakarta.servlet)を使う必要あり。Tomcat 9 だと別エラー

関連情報

  • 同じ原因で「型 org.apache.tomcat.InstanceManager を解決できません」も発生
  • Tomcat 10 系では javax.servletjakarta.servlet へパッケージ名が変更されている
  • Spring Boot 3 + 内蔵 Tomcat の場合は外部 Tomcat が不要なので、別の構成エラーを疑う
編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。org.apache.tomcat.InstanceManager のクラス・ファイルが見つかりません。ビルド・パスを修正してから、プロジェクトの取り消しおよび再ビルドを行ってください。
  2. 型 org.apache.tomcat.InstanceManager を解決できません。必要な .class ファイルから間接的に参照されています
  3. 要求されたリソースへのアクセスが拒否されました