アドレスがすでに使用されている Java の JVM_Bind エラー
このチュートリアルでは、Java の address already in use jvm_bind
エラーについて説明します。
Address already in use: JVM_Bind
Java のエラー
Address already in use: JVM_Bind
は、主に Web アプリケーションで作業しているときに発生します。 このエラーは、Tomcat、Struts、JBoss などのサービスを使用している場合によく発生します。
他のアプリケーションがすでにリッスンしているポートにバインドしようとすると、エラーが発生します。 この問題を解決するには、現在のアプリケーションのポートを変更するか、同じポートで実行されている他のアプリケーションを強制終了する必要があります。
これが両方のシナリオの解決策です。
Web サーバーを別のポートで実行するように変更する
Web サーバー ポートの変更は、ほとんどのシナリオで簡単な作業です。 たとえば、Tomcat を使用している場合は、以下のプロセスに従って Web サーバーのポートを変更します。
-
通常、ディレクトリ
C:/apache-tomcat-7.0.11/conf/server.xml
にあるファイルserver.xml
を探します。 -
以下に示すように、ファイル
server.xml
はコード スニペットになります。<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
- ここで、コネクタのポート番号を別のポート番号に変更して保存します。
- これで、指定したポート番号で Web サーバーが実行されます。 エラー
Address already in use: JVM_Bind
は解決されました。
前のサービスを終了する
ポートで実行されていた以前のアプリケーションを強制終了して、そのポートでアプリケーションを実行することもできます。 そのためには、サービスが実行されているプロセスを見つけて、そのサービスを強制終了する必要があります。
Windows および Linux プラットフォームでサービスを見つけて強制終了するプロセスは次のとおりです。
Windows の場合:
-
まず、ポート番号を使用してプロセスを見つけます。 次のコマンドを使用します。
netstat -ano | find "8080"
-
上記のコマンドは、ポート
8080
で実行されているプロセスを検出します。 たとえば、見つかったプロセスは1234
です。 -
次のコマンドを使用して、プロセス
1234
を強制終了します。taskkill /F /PID 1234
taskkill
コマンドは、プロセス ID1234
のプロセスを強制終了します。- これで、
Address already in use: JVM_Bind
エラーなしで、ポート8080
でアプリケーションを実行できます。
Linux の場合:
-
同様に、
netstat
コマンドも Linux でサービスまたはプロセスを検索するために使用されます。 -
netstat
はネットワークのステータスを表示するために使用され、grep
コマンドはポートで実行されているプロセスを見つけるために使用されます。 以下のコマンドを参照してください。netstat -an | grep "8080"
-
上記のコマンドは、ポート
8080
で実行されているプロセスを検出します。 たとえば、見つかったプロセスは1234
です。 -
kill
コマンドを使用して、1234
プロセスを強制終了します。kill - 1234
-
Linux でこれらのコマンドを実行すると、
Address already in use: JVM_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