| この記事の要点 |
|
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 / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38