Tomcat java.net.BindException:Javaで既に使用されているアドレス
1.概要
このクイックチュートリアルでは、一般的な
__java.net.BindingExceptionエラー:既に使用中のアドレス
__errorの原因と対処方法について説明します。
2.エラーはいつ発生しますか.
私たちが知っているように、Apache Tomcatサーバーはデフォルトで8080ポートを使用します。
ポート番号の範囲は0から65535ですが、
ポートは常に1つのアプリケーションでしか占有できません
。
例外は、アプリケーションがすでに他のプロセスによって使用されているポートを使用しようとしているか、Tomcatサーバーを適切に停止しなかったことを示しています。
3.診断する
このエラーを解決するには、そのポートを使用しているサービスを強制終了するか、Webサーバーを別のポートで実行するように変更します。
3.1. 衝突を発見する
この場合、どのアプリケーションがポートを使用しているかを調べる必要があります。
netstat
コマンドは、現在のTCP/IP接続を見つけるために使用できます。
以下は、さまざまな環境でプロセスを見つけて強制終了するために使用できるコマンドです。
-
Windowsでは、** 出力の最後の列に、8080で現在実行されているサービスのプロセスIDが表示されます。
netstat -ano | find "8080"
出力:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376
ここで、21376はポート8080で待機しているプロセスのプロセスIDです。
-
Unix/Linux環境** の場合:
netstat -pant | grep "8080"
出力:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376
Windowsの出力と同じです。ここで、21376はポート8080で待機しているプロセスのプロセスIDです。
-
Mac OS Xの場合:**
lsof -t -i :8080
出力:
21376
PIDのみが表示されます。
3.2. 別のポートでサーバーを実行中
実行中のプロセス、実行中のプロセス、およびそのポートで実行する必要があることがわかっている場合は、サーバーアプリケーションが実行しようとしているポートを変更することができます。
Tomcatのポートを変更するには、
server.xml
ファイルを編集する必要があります。これをする:
-
__tomcat/conf
__folderを開く -
server.xml
を編集する -
__コネクタポートを
新しいポートに置き換えます。 -
Tomcatサーバーを再起動します
server.xml
ファイルは次のようになります。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443"/>
これでTomcatはカスタマイズされたポート上で動作します。
3.3. 実行中のサービスを停止する
-
実行中のプロセスを止めるには、
kill
** コマンドを使います。
3.1で見つけたプロセスIDを使用して、実行しているオペレーティングシステムに応じて異なるコマンドが必要になります。
-
Windows環境の場合:**
taskkill/F/PID 21376
-
Unix/Linux環境の場合:**
kill - 21376
-
Mac OS X環境:**
kill -9 21376
4.まとめ
記事の冒頭で述べたように、
java.net.BindingException
は一般的ですが解決しやすいエラーです。
主な難点は、
netstat
端末アプリケーションでポートを使用して競合しているサービスを見つけることであり、それから適切な行動方針を決定することです。
一度発見されれば、修正は簡単です。