タイトル: 型 org.apache.tomcat.InstanceManager を解決できません。必要な .class ファイルから間接的に参照されています
SEOタイトル: 型 org.apache.tomcat.InstanceManager を解決できません の対処
| この記事の要点 |
|---|
|
エラー内容
Eclipse でソースを開いたときに以下のようなエラーが出る:
Description: 型 org.apache.tomcat.InstanceManager を解決できません。
必要な .class ファイルから間接的に参照されています
Resource: MyServlet.java
Location: line 1
Type: Java の問題
同種の問題ビューエラー「ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした」もセットで発生することが多いです。
原因
org.apache.tomcat.InstanceManager はTomcat に含まれる API クラスです。Eclipse の動的 Web プロジェクトでは「ターゲット・ランタイム」として Tomcat を関連付けることで、コンパイル時にこのクラスを参照できます。
このエラーは以下の状況で発生:
- Tomcat ランタイムが Eclipse に未登録
- プロジェクトにターゲット・ランタイムが選択されていない
- 登録済み Tomcat のパスが無効 (Tomcat フォルダ移動・削除)
- git clone した他人のプロジェクト(自分の環境に Tomcat 設定がない)
- ワークスペース変更後の設定喪失
対処方法
方法 1: プロジェクトに Tomcat ランタイムを関連付け
- プロジェクトを右クリック → プロパティ
- 左メニューから ターゲット・ランタイム を選択
- 「Apache Tomcat v9.0」などにチェック
- 「適用して閉じる」
※ 一覧に Tomcat が表示されない場合は方法 2 でランタイム登録から始めます。
方法 2: Eclipse に Tomcat ランタイムを登録
- ウィンドウ → 設定
- サーバー → ランタイム環境
- 追加 → 「Apache Tomcat v9.0」を選択 → 次へ
- インストール・ディレクトリー: Tomcat フォルダ(例:
C:\apache-tomcat-9.0.71) - JRE: JDK を選択
- 完了
- 方法 1 でプロジェクトに関連付け
方法 3: ビルド・パスから直接 jar を追加(非推奨)
応急処置として、Tomcat の lib/ 内の jar を直接ビルド・パスに追加することもできますが、根本解決ではありません:
- プロジェクト右クリック → ビルド・パス → ライブラリーの追加
- 外部 jar →
$CATALINA_HOME/lib/tomcat-api.jar等を追加
確認・解決後の動作
- プロジェクト → クリーン
- 問題ビューでエラーが消えていることを確認
- サーバービューに Tomcat があれば、プロジェクトを追加して起動テスト
関連エラー
| エラー | 原因 |
|---|---|
| ビルド・パスが不完全であるため... | 同じ問題、プロジェクト全体のビルド失敗 |
| HttpServletRequest を解決できません | Servlet API jar 未認識 |
| The superclass "javax.servlet.http.HttpServlet" was not found | JSP/Servlet で同種 |
| javax.servlet.ServletException を解決できません | Servlet API 未認識 |
git clone 直後の標準セットアップ
- Eclipse でインポート → 既存プロジェクトで clone フォルダを取り込み
- 方法 2 で Tomcat ランタイム登録(初回のみ、以後不要)
- 方法 1 でプロジェクトに関連付け
- JDK バージョンも揃える(プロパティ → Java コンパイラー)
- プロジェクト → クリーン