タイトル
TOPJava環境構築 → This Page

Tomcat が起動しない場合の対処方法

前提

ここで紹介する対処方法は以下の現象が起きた場合の対処方法です。
・startup.bat を実行してもすぐに終了してしまう(バッチで起動した場合)
・startup.bat が途中で止まる(バッチで起動した場合)
・サービスが開始しない(サービスで起動した場合)
・http://localhost:8080/ へアクセスしてもエラーになる

原因

Tomcat が動作しない主な原因は以下の2つです。
・Tomcat の設定ミス
・JRE の設定ミス
・ポート番号の競合

Tomcat の設定ミスの対処方法

まず Tomcat の導入ページを良く読み、
手順に間違いや漏れがなかったかを確認して下さい。

JRE の設定ミスの対処方法

まず Tomcat の導入ページに記載されている「前提」部分を読み、
Java のバージョンとインストールした Tomcat とのバージョンが合っているかどうかを確認して下さい。

合っている場合は「コマンドプロンプト」を表示させて java -version を実行し、
動作している Java のバージョンが正しいかを確認して下さい。

そもそもこのコマンド自体がエラーになる場合は Java の設定が間違っているので
Java 動作環境(JRE)の導入 または Java 開発環境(JDK)の導入 を参考に正しく設定して下さい。

思っていたのと違う Java のバージョンが表示された場合は
複数のバージョンの Java がインストールされており、別バージョンの Java がメインで動作している可能性があるので
環境変数の Path を修正する必要があります。

Windows のメニューより、「コントロールパネル」→
「システム」で「システムのプロパティ」画面を表示させます。
(「マイコンピュータ」の右クリックで「プロパティ」を選択でも可)
「システムのプロパティ」で「詳細」タブをクリックし、
「環境変数」ボタンをクリックします。
(画面は Windows 2000 と XP で若干違います)
図:システムのプロパティ

「環境変数」画面の「システム環境変数」一覧にある「Path」を選択し、
「編集」ボタンをクリックします。
図:環境変数

「システム変数の編集」画面の変数値に Java のパスがあると思います。
(C:\j2sdk1.4.2_08\bin や %JAVA_HOME%\binなど)
その部分を以下の図のように先頭に持ってきて OK ボタンを押して下さい。
(セミコロンで区切るのを忘れずに)
図:環境変数

ポート番号の競合の対処方法

ポート番号 8080 が競合しそうなものに以下のものがあります。
(もちろん同マシンにインストールされている場合)
・IIS
・Apache
・Oracle(9i のみ?)←(Oracle 10g でも同様でした:2010/01/22追記)

IIS のポート番号の確認と変更

IIS を起動し、「規定の Web サイト」で右クリック→「プロパティ」を選択します。
図:IIS メイン画面

「規定の Web サイトのプロパティ」画面が表示されるので、
「Web サイト」タブの「TCP ポート」という欄を確認します。
(以下の図では 80 になっています)
ポート番号を変更したい場合はこの値を変更し、OK ボタンを押せば変更完了です。
図:IIS 規定の Web サイトのプロパティ

Apache のポート番号の確認と変更

Apache がインストールされているフォルダに conf というフォルダがあると思います。
その中に httpd.conf ファイルがあるのでテキストエディタで開きます。
ファイル内に Listen 80 のような箇所があると思います。この 80 がポート番号です。
(あくまでもデフォルトが 80 であるだけなので、上記値であるとは限りません)
ポート番号を変更したい場合はこの値を変更して保存し、Apache を再起動すれば変更完了です。

Oracle

Oracle 9i を普通にインストールするとXDB(XML データベース)という機能がインストールされてしまいます。
(↑正確には「Oracleのインスタンスを作成すると」かな:2010/01/22追記)
(残念ながら Oracle 10g の場合は分かりません)
(↑Oracle 10g でも同様でした、Oracle 11g は環境がないので分かりません:2010/01/22追記)
この XML データベースがデフォルトで 8080 のポート番号を使っているため Tomcat と競合してしまいます。
いくつかのサイトで「Oracle HTTP Server がデフォルトで 8080 を使っている」という内容を見たことがありますが、
Oracle HTTP Server のデフォルトポート番号は 8080 ではないので間違いです。
対処としては XML データベースのポート番号を変更する方法がありますが、
そもそも XML データベースを使っていないなら削除した方が良いでしょう。
Oracle で以下のようにコマンドを実行して下さい。
CONNECT SYSTEM/XXXXX@YYYYY AS SYSDBA ←XXXXX はSYSTEMのパスワード、YYYYYは接続文字列です
SET ECHO ON
SPOOL CATNOQM
@D:\oracle\ora92\rdbms\admin\catnoqm.sql ←実際のOracleのパスになおして下さい
SPOOL OFF
DROP TABLESPACE XDB INCLUDING CONTENTS AND DATAFILES;
SHUTDOWN IMMEDIATE
STARTUP
これで XML データベースが削除されます。

XML データベースが必要な場合には削除ではなく、変更を行う必要があります。
Oracle 9.2 では Enterprise Manager Console でデータベースに XDB ユーザの SYSDBA 権限で接続し、
ネットワーク>データベース>データベース名>XML データベース>構成 を開きます。
図:Enterprise Manager Console

http-port 欄に新しいポート番号を入力し、適用ボタンを押します。
これで XML データベースのポート番号変更完了です。
図:XML データベースの構成
(Oracle 9.2 以前のバージョンではこの画面がないらしいのでちょっと分かりません)


ちなみにポート番号 8080 に接続するアプリを動かそうとすると
以下のような認証画面が表示された場合は
ほぼ確実にXDB(XML データベース)が動いています。
図:XDB(XML データベース)の認証画面
(XDB のサーバー localhost にはユーザー名とパスワードが必要です。だってさ。)

Tomcat のポート番号の変更

他ソフトのポート番号を変更するのが無理な場合は Tomcat 自体のポートを変えてしまいましょう。
Tomcat がインストールされているフォルダに conf というフォルダがあると思います。
その中に server.xml ファイルがあるのでテキストエディタで開きます。
ファイル内に port="8080" のような箇所があると思います。
この値を変更して保存し、Tomcat を再起動すれば変更完了です。
もちろんブラウザでアクセスする際の URL は http://localhost:新しいポート番号/ にする必要があります。

更新履歴

2010/01/22 情報追加
2007/12/01 Javaのコーナー細分化に伴い、URL の変更


TOPJava環境構築 → This Page