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