Port 8080 is already in use
org.springframework.boot.web.server.PortInUseException: Port 8080 is already in use
스프링부트를 이용하여 개발한 내용을 로컬에서 확인하기 위해 위와 실행했을 때, 위와 같은 에러가 발생할 수 있습니다. 이 에러가 발생하는 이유는 이미 포트를 사용중인 포트이기 때문입니다.
발생 원인
- 동일한 포트를 사용하는 어플리케이션을 번갈아가며 실행 시키는 경우 (이미 다른 하나가 실행중)
- IDE 상에서는 프로세스가 종료되었으나 실제 프로세스가 종료되지 않은 경우
일반적으로 위 두 가지 경우에 PortInUseException 에러가 발생하게되고, 보통 2번의 경우가 많이들 겪게 되는 상황이라고 생각됩니다.
2번 상황이 발생하는 이유는 컴퓨터가 한번 종료되었을 경우라던가 IDE의 문제라고 생각됩니다.
해결 방법
포트가 이미 실행중이라면 생각해볼 수 있는 해결방법은 두 가지가 있습니다.
- 실행하려고하는 어플리케이션의 실행 포트를 변경한다.
- 현재 포트를 사용하고 있는 프로세스를 종료한다.
포트 변경하기
# application.yml
+ server.port: 8081
스프링 또는 스프링부트에서 위와 같이 설정해주시면 어플리케이션의 포트를 변경할 수 있습니다.
프로세스 종료하기
Window
프로세스를 종료하는 방법은 OS 별로 다르기 때문에 macOS와 Windows에서 각각 소개해드리도록 하겠습니다.
Windows OS 프로세스 종료1. cmd 창을 열고 아래와 같은 명령어를 입력해줍니다.
netstat -ano
- netstat: 현재 TCP/IP 네트워크 연결 상태 확인
- a: 모든 연결 및 수신 대기 포트를 표시
- n: 주소 및 포트 번호를 숫자 형식으로 표시
- o: 각 연결의 소유자 프로세스 ID를 표시
프로토콜 / 로컬 주소 / 외부 주소 / 상태 / PID
TCP 0.0.0.0:8080 0.0.0.0 LISTENING 12345
2. taskkill 명령어로 해당 포트를 사용하고 있는 프로세스 종료한다.
taskkill /f /pid 12345
위 명령어를 통해 프로세스를 종료해줍니다.
Mac
macOS 프로세스 종료1. lsof 명령어로 해당 포트를 사용하는 프로세스를 조회합니다.
lsof -n -i -P | grep 8080
- lsof: 현재 실행중인 프로세스를 확인한다.
- -n: 호스트네임을 제거한다.
- -i: IPv[46] 파일들을 선택한다.
- -P: 포트의 이름을 제거한다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 12345 user 128u IPv6 0x5210d6 0t0 TCP 127.0.0.1:8080 (LISTEN)
2. 해당 포트를 사용하는 프로세스를 종료한다.
kill -9 12345
위 명령어를 통해 프로세스를 종료합니다.'Develop > SpringBoot' 카테고리의 다른 글
DAO, DTO, VO, Entity의 개념 (0) | 2021.12.30 |
---|---|
Spring Boot : MVC패턴 (0) | 2021.12.30 |
IntelliJ 콘솔창 색깔 바꾸기 : Grep Console (0) | 2021.12.28 |
템플릿 엔진이란? (0) | 2021.12.24 |
최근댓글