HOWTO · Java

Java.Net.BindException 수정: 이미 사용 중인 주소: 바인드

이 튜토리얼은 java.net.BindException: Address already in use: Java의 바인드 오류를 보여줍니다.

이 페이지의 내용

이 튜토리얼은 Java에서 java.net.BindException: Address already in use: Bind 오류를 보여줍니다.

Java에서 java.net.BindException: Address already in use: Bind 수정

java.net.BindException: 이미 사용 중인 주소: 바인드 오류는 하나 이상의 애플리케이션에서 하나의 포트를 사용하는 경우 주소가 이미 사용 중임을 오류에 명시하므로 발생합니다. 예외는 다른 프로세스가 이미 사용하려는 포트를 사용하고 있음을 나타냅니다.

이 오류를 해결하기 위해 다른 포트에서 서버를 실행하거나 포트에서 이전 프로세스를 종료할 수 있습니다. 이 문제를 해결하려면 주어진 포트에서 어떤 프로세스가 실행되고 있는지 알아야 합니다.

포트에서 충돌 프로세스 찾기

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

유닉스/리눅스:

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 예외를 해결하는 두 가지 솔루션입니다.

해결 방법 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: Address already in use: Bind 오류가 해결됩니다.

솔루션 2: 이전 프로세스 종료

포트에서 이미 실행 중인 프로세스를 종료하여 프로세스를 실행할 수 있으며 java.net.BindException: Address already in use: Bind 오류가 해결됩니다.

프로세스를 종료하는 명령을 실행할 수 있지만 명령은 플랫폼마다 다릅니다.

윈도우:

taskkill /F /PID 12345

맥 OS:

kill -9 12345

유닉스/리눅스:

kill - 12345

위의 명령은 다른 플랫폼의 현재 포트에서 프로세스를 종료할 수 있습니다. 프로세스를 종료한 후 현재 포트에서 프로세스를 실행할 수 있으며 java.net.BindException: Address already in use: Bind 오류가 해결됩니다.