タイトル: ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。org.apache.tomcat.InstanceManager のクラス・ファイルが見つかりません。ビルド・パスを修正してから、プロジェクトの取り消しおよび再ビルドを行ってください。
SEOタイトル: Eclipse「org.apache.tomcat.InstanceManager のクラス・ファイルが見つかりません」対処
| この記事の要点 |
|
エラーの状況
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; がエラーにならなければ解決です。
関連
- 同じ原因で「型
org.apache.tomcat.InstanceManagerを解決できません」も同時に発生する - Maven プロジェクトなら
pom.xmlのに Servlet API がprovidedスコープで入っていることを確認 - Gradle なら
compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0'相当