HOWTO · Java
アドレスがすでに使用されている Java の JVM_Bind エラー
このチュートリアルでは、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エラーが解決されます。