はじめに

この記事は、これからJavaでWebアプリケーションを開発したいが「IDEの動作が重い」「サーバー起動でエラーが出る」という悩みを抱えた初学者〜中級者向けです。
Eclipseに標準装備されている「Serversビュー」を正しく使うと、TomcatやWildFlyの起動/停止がワンクリックで完結し、ホットデプロイによりソース修正→再デプロイ→ブラウザリロードという高速サイクルが実現します。本記事では、Serversビューの基本操作から、ポート競合やタイムアウトエラーが出たときの切り分け手順まで、画像なしでサクッと理解できるよう解説します。

前提知識

  • Java SE 11以降の基本的な文法が読める
  • Maven/Gradleでwarファイルが作れる(またはEclipseのDynamic Web Projectを作成したことがある)
  • コマンドプロンプト/ターミナルでnetstatpsコマンドが打てる

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:ランタイム環境の登録

  1. メニュー「Window」→「Preferences」→「Server」→「Runtime Environments」
  2. 「Add」ボタンを押し、利用したいバージョンを選択(例:Apache Tomcat 10.1)
  3. 「Tomcat installation directory」にダウンロード済みのフォルダを指定
  4. JREは「Workbench default」でOK(Java 17以降が必須なら別途指定)

この時点でThe specified directory is not validと出たら、

  • ダウンロードが途中で失敗し、lib/catalina.jarが存在しない
  • フォルダパスに日本語や空白が含まれている(Windows特有)

のいずれかです。再ダウンロードまたはC:\servers\tomcat10 のような短いパスに移動しましょう。

ステップ2:Serversビューにサーバーを追加

  1. 「Window」→「Show View」→「Servers」でビューを開く
  2. 右クリック「New」→「Server」
  3. ウィザードで先ほどのランタイムを選択
  4. 「Next」でリソースの追加画面が出たら、デプロイしたいプロジェクトを右ペインに移動
  5. 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:ホットデプロイを速くする裏ワザ

  1. サーバーをダブルクリック→「Publishing」で「Automatically publish when resources change」を選ぶ
  2. 「Publishing interval」を0秒にする(デフォルトは1秒)
  3. 「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ビューとの連携方法を深掘りします。

参考資料