この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
更新日時:2026-06-11 07:12:00
タイトル: エラー一覧
SEOタイトル: Tomcat エラー一覧|起動失敗 / 404 / Servlet マッピング / 文字化け対処入口
| この記事の要点 |
- Tomcat 関連のエラー一覧入口ページ
- カテゴリ: ビルド/コンパイル時 / 起動失敗 / ランタイム / クラス解決 / アクセス制御
- 切り分け順:
catalina.out 確認 → Eclipse 由来か Tomcat 由来か → バージョン整合 → WAR 配置 - 頻出: InstanceManager / build-path / 404 / port 8080 already in use / OutOfMemoryError
- 子ページから個別エラーを選択
|
Tomcat エラーの種類
| 種類 | 典型例 | 主な原因 |
| ビルド/コンパイル時 | org.apache.tomcat.InstanceManager not found / ビルドパス不完全 | Eclipse のターゲットランタイム未設定 |
| 起動失敗 | Address already in use: bind / Failed to start | ポート競合 / 既存プロセス / 設定不正 |
| クラス解決 | ClassNotFoundException / NoClassDefFoundError | lib jar 不足 / 依存衝突 |
| HTTP エラー | 404 Not Found / 500 Internal Server Error | マッピング不正 / コード例外 |
| メモリ | java.lang.OutOfMemoryError / Metaspace | -Xmx 不足 / メモリリーク |
| WAR 配置 | モジュール名が無効 / WAR が展開されない | 動的 Web ファセット未設定 / packaging 不一致 |
| 文字コード | 日本語文字化け / ???? 表示 | URIEncoding / 文字エンコーディング設定 |
切り分けの起点: catalina ログ
Tomcat エラーは大半が catalina.out または catalina.YYYY-MM-DD.log に出ます:
# 標準的なログ場所
$CATALINA_HOME/logs/
├── catalina.out ← 標準出力 / エラー出力(最重要)
├── catalina.2024-05-15.log ← Tomcat 自身のログ
├── localhost.2024-05-15.log ← Web アプリのデプロイ・初期化ログ
├── manager.2024-05-15.log ← Manager アプリのログ
├── host-manager.2024-05-15.log
└── localhost_access_log.2024-05-15.txt ← アクセスログ
# リアルタイム監視
tail -f $CATALINA_HOME/logs/catalina.out
# エラーだけ抽出
grep -iE "(error|exception|severe)" $CATALINA_HOME/logs/catalina.out | tail -50
# Docker の場合
docker logs -f tomcat-container
頻出エラー Top 10 と対処
| エラー | 原因 | 対処 |
| java.net.BindException: Address already in use | ポート 8080 が他プロセスで使用中 | netstat -ano \| findstr 8080 で確認 / 別ポートに変更 |
| org.apache.tomcat.InstanceManager not found | Eclipse のターゲットランタイム未設定 | プロパティ → ターゲットランタイムで Tomcat にチェック |
| HTTP Status 404 - Not Found | コンテキストパス / サーブレットマッピング違い | web.xml と @WebServlet の URL パターン確認 |
| java.lang.OutOfMemoryError: Java heap space | ヒープ不足 | setenv.sh で -Xmx2g 指定 |
| java.lang.OutOfMemoryError: Metaspace | クラスロード過多(hot deploy で増える) | -XX:MaxMetaspaceSize=512m |
| ClassNotFoundException | lib に jar が無い / 依存解決失敗 | WEB-INF/lib に jar を配置 or pom.xml 修正 |
| java.lang.IllegalStateException: getOutputStream() has already been called | getWriter と getOutputStream の混在 | どちらかに統一 |
| The requested resource is not available | WAR がデプロイされていない | webapps/ に配置 or manager で deploy |
| org.apache.catalina.core.StandardContext.startInternal Error | アプリ初期化失敗 | localhost ログでスタックトレース確認 |
| java.io.UnsupportedEncodingException: ${file.encoding} | 変数展開が失敗 | setenv.sh の構文ミス確認 |
調査フローチャート
- catalina.out をスクロールして最新のエラーを確認
- スタックトレースの Root Cause(Caused by:)を探す
- エラーメッセージの固有部分でこの Wiki / Google 検索
- 環境問題か、コード問題かを見極める
- 環境: ポート / 設定ファイル / ライブラリ → Tomcat / OS の確認
- コード: アプリ起動時 → アプリのロジック修正
- Tomcat バージョンを確認(Servlet API のバージョン整合性)
- 必要なら WAR 再ビルド・再配置でクリーンに
Tomcat バージョンと Servlet API
| Tomcat | Servlet API | パッケージ | JDK 最低 |
| 7.0 | 3.0 | javax.servlet | JDK 6+ |
| 8.5 | 3.1 | javax.servlet | JDK 7+ |
| 9.0 | 4.0 | javax.servlet | JDK 8+ |
| 10.0 / 10.1 | 5.0 / 6.0 | jakarta.servlet | JDK 8 / 11+ |
| 11.0 | 6.1 | jakarta.servlet | JDK 17+ |
Tomcat 10 でパッケージが javax → jakarta に変更。古いコードを Tomcat 10 にデプロイすると ClassNotFoundException 連発するので注意。
関連子ページ
- InstanceManager クラスが見つかりません
- 型 InstanceManager を解決できません
- ビルド・パスが不完全です
- モジュール名が無効です (WAR エクスポート)
- サーバとプロジェクトの紐付け
- Tomcat プロジェクトのディレクトリ構成
各エラーの詳細は子ページを参照してください。一般的な調査の起点は本ページのフローチャートです。