Spring

[스프링/Spring] Port 8080 is already in use 에러 해결 방법

빈 🐥 2024. 1. 7. 17:54

 

같은 문제를 계속 찾아보게 되어서 정리하는 중..🐣

 

Port 8080 is already in use

스프링부트를 이용하여 개발한 내용을 로컬에서 확인하기 위해 실행 했을 때 아래와 같은 에러가 발생할 수 있습니다. 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-01-07T17:33:41.497+09:00 ERROR 46617 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

 

GPT 님의 설명

포트 충돌 문제 (Port Conflict) :

오류: `Web server failed to start. Port 8080 was already in use.`

Spring Boot 애플리케이션이 사용하려고 하는 기본 포트인 8080이 이미 다른 프로세스에 의해 사용되고 있음을 나타냅니다. 웹 서버는 동일한 포트에서 두 프로세스를 실행할 수 없으므로, 이 문제가 해결되지 않으면 애플리케이션이 시작되지 않습니다. 

따라서, 현재 8080 포트를 사용하고 있는 프로세스를 식별하고 종료하거나, Spring Boot 애플리케이션의 포트를 변경해야 합니다. 포트를 변경하는 방법은 application.properties 파일에 server.port=포트번호 라인을 추가하거나, 실행 시 명령줄 옵션으로 포트를 지정하는 것입니다.

 

해결 방안

1. 실행하려고 하는 애플리케이션의 실행 포트를 변경
2. 현재 포트를 사용하고 있는 프로세스를 종료

 

포트 변경하기

방법 1: application.properties 파일 사용

프로젝트 'src/main/resource 디렉토리 안에 있는 application.properties 파일을 엽니다. 이 파일이 없다면 새로 생성합니다.

# server.port=원하는포트번호
server.port=9090

 

방법 2: application.yml 파일 사용 (YAML 형식)

src/main/resources 디렉토리에 application.yml 파일을 엽니다. 이 파일이 없으면 새로 생성합니다.

# server:
#   port: 원하는포트번호
server:
  port: 9090

 

방법 3: 명령줄 인수 사용

애플리케이션을 실행할 때 명령줄에서 직접 포트를 지정할 수도 있습니다. 이 방법은 애플리케이션 실행 시 매번 포트를 지정해야 한다는 단점이 있습니다.

java -jar 애플리케이션명.jar --server.port=9090

 

또는, Gradle이나 Maven을 사용하는 경우:

./gradlew bootRun --args='--server.port=9090'

 

또는 Maven을 사용하는 경우:

mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=9090

 

프로세스 종료하기

macOS 프로세스 종료

1. lsof 명령어로 해당 포트를 사용하는 프로세스를 조회합니다.

lsof -i tcp:8080

 

결과값

COMMAND  PID   USER  FD    TYPE  DEVICE              SIZE/OFF  NODE  NAME
java     1234  user  141u  IPv6  0xb573212aedb33bdb  0t0       TCP   127.0.0.1:8080 (LISTEN)

 

2. 해당 포트를 사용하는 프로세스를 종료한다.

sudo kill -9 1234

 

 

Windows OS 프로세스 종료

1. cmd 창을 열고 아래와 같은 명령어를 입력해줍니다.

netstat -ano

 

결과값

프로토콜  /    로컬 주소    /  외부 주소   /    상태     /  PID
TCP       0.0.0.0:8080    0.0.0.0     LISTENING     1234

 

2. taskkill 명령어로 해당 포트를 사용하고 있는 프로세스 종료한다.

taskkill /f /pid 1234

 

반응형