| この記事の要点 |
|
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 プロジェクトのディレクトリ構成
各エラーの詳細は子ページを参照してください。一般的な調査の起点は本ページのフローチャートです。
子ページ
人気ページ
- 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・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09