Java.Net.BindException: Address Already in Use: Bind を修正します。
-
Java で
java.net.BindException: Address already in use: Bind
を修正 - 解決策 1: サーバーを別のポートで実行する
- 解決策 2: 前のプロセスを強制終了する
このチュートリアルでは、Java での java.net.BindException: Address already in use: Bind
エラーについて説明します。
Java で java.net.BindException: Address already in use: Bind
を修正
エラー java.net.BindException: Address already in use: Bind
は、1つのポートが複数のアプリケーションで使用されている場合に発生します。これは、アドレスが既に使用されていることもエラーに示されているためです。 例外は、使用しようとしているポートを他のプロセスが既に使用していることを示しています。
このエラーを解決するには、サーバーを別のポートで実行するか、ポートで以前のプロセスを強制終了します。 この問題を解決するには、特定のポートで実行されているプロセスを知る必要があります。
ポートで競合プロセスを見つける
ポートで java.net.BindException: Address already in use: Bind
エラーが発生している場合は、ポートで実行されている他のプロセスを見つけることができます。 netstat
コマンドを使用して、現在の TCP/IP
接続を知ることができます。
ここでは、さまざまなプラットフォームでの netstat
の使用について説明します。
ウィンドウズ:
たとえば、ポートは 8080
です。 Windows では、netstat
コマンドの出力の最後の列に、ポート 8080
で実行されているプロセスのプロセス ID が表示されます。 次のコマンドを参照してください。
netstat -ano | find "8080"
コマンドの出力は次のとおりです。
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 12345
プロセス 12345
はポート 8080
で実行されています。
マックOS:
Mac OS の場合、コマンドは netstat
とは異なります。 netstat
の代わりに、lsof
を使用して、特定のポートで実行されているプロセスをチェックします。
次のコマンドを参照してください。
lsof -t -i:8080
このコマンドの出力には、プロセス ID のみが表示されます。
12345
Unix/Linux:
Linux/Unix のコマンドは次のようになります。
netstat -an | grep "8080"
ここでの出力も Windows と同様であり、同様に読み取ることができます。
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 12345
プロセス 12345
はポート 8080
で実行されています。
java.net.BindException: Address already in use: Bind
例外を解決する 2つの解決策を次に示します。
解決策 1: サーバーを別のポートで実行する
この例外に対する 1つの解決策は、別のポート番号でプロセスを実行することです。 前のポートで他のプロセスが実行されているかどうかがわかったら、そのプロセスを別のポートに移すことができます。
たとえば、Tomcat を使用している場合、サーバーのポートを変更する手順を次に示します。
-
Tomcat ディレクトリを開き、次に
conf
フォルダーを開きます。 -
server.xml
をメモ帳またはその他のテキスト エディターで編集します。 -
ここで、コネクタ ポートを新しいポート番号に置き換えます。 次のようになります。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
ポートを変更した後:
<Connector port="8880" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
サーバーが別のポート番号に移行されると、エラー java.net.BindException: アドレスは既に使用されています: Bind
は解決されます。
解決策 2: 前のプロセスを強制終了する
ポートですでに実行されているプロセスを強制終了することで、そのポートでプロセスを実行でき、java.net.BindException: Address already in use: Bind
というエラーが解決されます。
コマンドを実行してプロセスを強制終了できますが、コマンドもプラットフォームごとに異なります。
ウィンドウズ:
taskkill /F /PID 12345
マックOS:
kill -9 12345
Unix/Linux:
kill - 12345
上記のコマンドは、さまざまなプラットフォームの現在のポートでプロセスを強制終了できます。 プロセスを強制終了した後、現在のポートでプロセスを実行できます。エラー java.net.BindException: Address already in use: Bind
は解決されます。
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook