Spring Boot起動時にエラー、"Web server failed to start. Port 8080 was already in use."

EclipseでSpring Bootのウェブアプリ起動時にエラー発生したので、その解決策について説明してます。エラーメッセージは、"Web server failed to start. Port 8080 was already in use."。あと、ウェブアプリのAPサーバTomcatの起動時のポート番号の指定についても説明しています。

目的と環境

最終更新日:2022/11/22

EclipseでSpring Bootのウェブアプリを起動した時に、コンソールタブに下記のエラーが発生して起動できない問題が発生したので、その解決策と対処法について書いています。

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-11-29 14:09:08.095 ERROR 41363 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.

・開発環境やバージョン情報です。
OS:macOS Big Sur(バージョン11.0.1)
Eclipse:Pleiades All in One、4.16(2020-06)、Java Full Edition版

Eclipse上で既に動作中のWebアプリを停止する

エラーメッセージに"Port 8080 was already in use."とあるので、起動エラーの原因はすでにポート番号8080が使用されている状態なのに、新しくSpring BootのWebアプリを(ポート番号8080で)起動しようとしてもダメですというエラーだと思います。

このエラーが発生する時は、大体Spring BootなどのWebアプリを起動したけど停止するのを忘れてしまい、そして新しくWebアプリを起動した時にエラー発生となる事が多いです(EclipseでWebサーバにTomcatを使用する場合、デフォルトでポート8080を使うので)。

ですので、この場合はポート番号8080を使用している動作中のWebアプリを停止すれば解決できます。

Eclipseで動作中のアプリを停止するには、コンソールタブの上部にある赤い停止ボタンを押せば停止できますが、たぶん起動時に"Port 8080 was already in use."のエラーが出てる状態ではこの停止ボタンは押せないと思います。

そんな時は、コンソールタブ上で右クリック->"すべて終了/切断"を選択すれば、ポート8080を使用しているアプリを終了してくれるので、解決できると思います。

また、コンソールタブ上部の停止ボタンとは別に、Eclipse上部メニューバーにも赤い停止ボタンがあるので、それを押して動作中のアプリを停止しても解決できると思います。
Eclipse上部メニューバーの停止ボタンで起動中のWebアプリを停止

Spring Boot 本をAmazonで探す [広告]

コマンドでポート番号8080を使用しているプロセスを確認して削除する

Eclipse上での操作で動作中のアプリを停止できない場合、もしくはEclipseとは関係なくどこかでポート8080が使用されている場合、ターミナルでlsofコマンドを使用してポート8080のプロセスを確認する事ができます。

$ lsof -i:8080
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
java    41351 huser  88u  IPv6 0xe1**********d05b      0t0  TCP *:http-alt (LISTEN)
ポート8080のプロセスIDが確認できたら、killコマンドでそのプロセスを停止する事ができます。
(*ただ、停止する場合はそのプロセスを停止しても問題ないかどうかをしっかり確認してからにしましょう。)
$ kill 41351

起動するTomcatのポート番号を指定する

ポート番号8080を使用しているプロセスが別にあって、そのプロセスを削除したくない場合、Spring Boot(が使用しているアプリケーションサーバのTomcat)を別のポート番号で起動するというのも1つの手です。

起動するポート番号の設定は、src/main/resourcesディレクトリ下のapplication.propertiesファイル内の"server.port"でできます。

server.port=8090
これは、ポート番号8090でウェブアプリを起動するように設定しています。

その他のSpring Boot、Eclipseのページ

Spring Boot2で日記投稿ウェブアプリ開発入門トップページ
Spring Bootでシンプルな日記投稿ウェブアプリの開発しながら、入門者・初心者にもわかりやすいように説明しています。DBを使用して、新規投稿、編集、削除、一覧表示という基本的なCRUD機能を備えたアプリです。