HOWTO · Java

Java에서 이미 사용 중인 주소 JVM_Bind 오류

이 자습서는 Java에서 이미 사용 중인 주소 jvm_bind 오류를 보여줍니다.

이 페이지의 내용

이 자습서는 Java의 address already in use jvm_bind 오류를 보여줍니다.

Java에서 이미 사용 중인 주소: JVM_Bind 오류

이미 사용 중인 주소: JVM_Bind는 주로 웹 애플리케이션에서 작업할 때 발생합니다. 이 오류는 Tomcat, Struts, JBoss 등과 같은 서비스를 사용할 때 일반적입니다.

다른 응용 프로그램이 이미 수신 대기 중인 포트로 바인딩하려고 하면 오류가 발생합니다. 이 문제를 해결하려면 현재 애플리케이션의 포트를 변경하거나 동일한 포트에서 실행 중인 다른 애플리케이션을 종료해야 합니다.

다음은 두 시나리오에 대한 솔루션입니다.

다른 포트에서 실행되도록 웹 서버 변경

웹 서버 포트를 변경하는 것은 대부분의 시나리오에서 쉬운 작업입니다. 예를 들어 Tomcat을 사용하는 경우 웹 서버 포트를 변경하려면 아래 프로세스를 따르십시오.

  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. 이제 웹 서버가 주어진 포트 번호에서 실행됩니다. 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 포트에서 애플리케이션을 실행할 수 있습니다.

리눅스의 경우:

  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 오류가 해결됩니다.