Java.Net.BindException 수정: 이미 사용 중인 주소: 바인드
-
Java에서
java.net.BindException: Address already in use: Bind
수정 - 해결 방법 1: 다른 포트에서 서버 실행
- 솔루션 2: 이전 프로세스 종료
이 튜토리얼은 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
오류가 해결됩니다.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook