はじめに
この記事は、これからJavaでWebアプリケーションを開発したいが「IDEの動作が重い」「サーバー起動でエラーが出る」という悩みを抱えた初学者〜中級者向けです。
Eclipseに標準装備されている「Serversビュー」を正しく使うと、TomcatやWildFlyの起動/停止がワンクリックで完結し、ホットデプロイによりソース修正→再デプロイ→ブラウザリロードという高速サイクルが実現します。本記事では、Serversビューの基本操作から、ポート競合やタイムアウトエラーが出たときの切り分け手順まで、画像なしでサクッと理解できるよう解説します。
前提知識
- Java SE 11以降の基本的な文法が読める
- Maven/Gradleでwarファイルが作れる(またはEclipseのDynamic Web Projectを作成したことがある)
- コマンドプロンプト/ターミナルで
netstatやpsコマンドが打てる
Serversビューとは?なぜ便利なのか
Eclipseには「Servers」というパースペクティブが用意されており、アプリケーションサーバー(Tomcat、WildFly、GlassFish、Jettyなど)のライフサイクルをGUI一つで管理できます。
従来のやり方だと、ターミナルでcatalina.sh runを打ち、別ターミナルでtail -f logs/catalina.outと監視する必要がありました。Serversビューを使えば、
- 起動/停止/リスタートがアイコン一発
- 標準出力/エラー出力がConsoleビューに集約され、フィルタリング可能
- プロジェクトの自動デプロイ(ミニマム構成では1〜2秒)
- ブレークポイントが即効で効き、変数の中身がVariablesビューで丸見え
といったメリットがあります。特に、ソースを修正してCtrl+Sを押すだけで差分が反映される「自動ビルド+自動リロード」は、Rails開発のような体験をJavaで実現してくれます。
Serversビューの設定手順とトラブルシューティング
ステップ1:ランタイム環境の登録
- メニュー「Window」→「Preferences」→「Server」→「Runtime Environments」
- 「Add」ボタンを押し、利用したいバージョンを選択(例:Apache Tomcat 10.1)
- 「Tomcat installation directory」にダウンロード済みのフォルダを指定
- JREは「Workbench default」でOK(Java 17以降が必須なら別途指定)
この時点でThe specified directory is not validと出たら、
- ダウンロードが途中で失敗し、
lib/catalina.jarが存在しない - フォルダパスに日本語や空白が含まれている(Windows特有)
のいずれかです。再ダウンロードまたはC:\servers\tomcat10 のような短いパスに移動しましょう。
ステップ2:Serversビューにサーバーを追加
- 「Window」→「Show View」→「Servers」でビューを開く
- 右クリック「New」→「Server」
- ウィザードで先ほどのランタイムを選択
- 「Next」でリソースの追加画面が出たら、デプロイしたいプロジェクトを右ペインに移動
- Finishを押すと、サーバー構成ファイル(例:Tomcat v10.1 Server at localhost.server)が作成される
このファイルは.metadata/.plugins/org.eclipse.wst.server.core配下に保存され、ポート番号やJVM引数がXMLで保持されます。Gitで共有したい場合は、プロジェクトルートにserversフォルダを作り、「Import」→「Existing Server」で他メンバーと共有できます。
ステップ3:起動エラーの切り分け
症状1:「Starting...」のまま進まない(30秒以上)
原因の9割はポート競合です。Serversビューでサーバーを右クリックし「Properties」→「Ports」で実際の番号を確認し、以下を実行します。
Bash# Windows netstat -ano | findstr 8080 taskkill /PID <pid> /F # mac/Linux lsof -i:8080 kill -9 <pid>
症状2:「Server failed to start」が一瞬で終了
Consoleビューを見ると、
Exception in thread "main" java.lang.UnsupportedClassVersionError: ...
と出ていれば、TomcatがJava 17で動いているのにプロジェクトがJava 21でコンパイルされているというミスマッチです。
対処法:
- プロジェクトの「Properties」→「Project Facets」→Javaを17へダウングレード
- または、Tomcatを最新版に入れ替え(10.1.xはJava 21をサポート)
症状3:「Unable to bind to 8009」
デフォルトでAJPコネクタが有効になっているためです。
conf/server.xmlの以下をコメントアウトするか、Serversビューで「Open」→「server.xml」を直接編集して保存すればOK。
Xml<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
ステップ4:ホットデプロイを速くする裏ワザ
- サーバーをダブルクリック→「Publishing」で「Automatically publish when resources change」を選ぶ
- 「Publishing interval」を0秒にする(デフォルトは1秒)
- 「Modules」タブで「Auto reload enabled」をオフにする(JSP変更時のみリロード)
これにより、クラスファイルの差分デプロイが500ms以内に収まります。ただし、フィルタやリスナーなどのクラスを変更した場合は、手動で「Restart」が必要です。
ハマりがちなポイントと解決策
- プロジェクトをクローズしてもサーバー起動時に「ClassNotFound」
→.metadata/.plugins内に古いバッファが残るため、Serversビューで「Clean...」を実行 - ブラウザで「404」が出る
→ コンテキストルートがデフォルトでプロジェクト名になっているため、「Web Project Settings」で"/"に変更 - ブレークポイントが無視される
→ 「Run」→「Debug」ではなく「Servers」ビューの虫アイコンで起動しているか確認
まとめ
本記事では、EclipseのServersビューを使ってTomcat/WildFlyを起動・デバッグする手順と、ポート競合・クラスバージョンエラーの対処法を紹介しました。
- ServersビューはGUI一つでライフサイクルが完結
- ポート競合は
netstat/lsofで即座に特定 - ホットデプロイは「Auto reload off」で速度向上
これで、従来の「ターミナル3枚起動」から解放され、修正→F5→確認という高速ループが実現できます。
次回は、VS CodeのExtension Pack for Javaと比較しながら、EclipseのServersビューとの連携方法を深掘りします。
参考資料
