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 サーバーのポートを変更します。

  1. 通常、ディレクトリ C:/apache-tomcat-7.0.11/conf/server.xml にあるファイル server.xml を探します。

  2. 以下に示すように、ファイル server.xml はコード スニペットになります。

    <Connector port="8080" protocol="HTTP/1.1"
    			   connectionTimeout="20000"
    			   redirectPort="8443" />
    
  3. ここで、コネクタのポート番号を別のポート番号に変更して保存します。

  4. これで、指定したポート番号で Web サーバーが実行されます。 エラー Address already in use: JVM_Bind は解決されました。

前のサービスを終了する

ポートで実行されていた以前のアプリケーションを強制終了して、そのポートでアプリケーションを実行することもできます。 そのためには、サービスが実行されているプロセスを見つけて、そのサービスを強制終了する必要があります。

Windows および Linux プラットフォームでサービスを見つけて強制終了するプロセスは次のとおりです。

Windows の場合:

  1. まず、ポート番号を使用してプロセスを見つけます。 次のコマンドを使用します。

    netstat -ano | find "8080"
    
  2. 上記のコマンドは、ポート 8080 で実行されているプロセスを検出します。 たとえば、見つかったプロセスは 1234 です。

  3. 次のコマンドを使用して、プロセス 1234 を強制終了します。

    taskkill /F /PID 1234
    
  4. taskkill コマンドは、プロセス ID 1234 のプロセスを強制終了します。

  5. これで、Address already in use: JVM_Bind エラーなしで、ポート 8080 でアプリケーションを実行できます。

Linux の場合:

  1. 同様に、netstat コマンドも Linux でサービスまたはプロセスを検索するために使用されます。

  2. netstat はネットワークのステータスを表示するために使用され、grep コマンドはポートで実行されているプロセスを見つけるために使用されます。 以下のコマンドを参照してください。

    netstat -an | grep "8080"
    
  3. 上記のコマンドは、ポート 8080 で実行されているプロセスを検出します。 たとえば、見つかったプロセスは 1234 です。

  4. kill コマンドを使用して、1234 プロセスを強制終了します。

    kill - 1234
    
  5. Linux でこれらのコマンドを実行すると、Address already in use: JVM_Bind エラーが解決されます。