[TIL] 22.12.28 Port 8080 was already in use에러

hyewon jeong·2022년 12월 28일
0

TIL

목록 보기
55/138
post-thumbnail

1 발생

초기 프로젝트가 뭔가 잘 작동되지 않는거 같아 프로젝트를 종료한 채
새로 프로젝트를 만들었더니 아래와 같은 코드가 발생했다.

2 코드

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-12-28 12:19:46.063 ERROR 54360 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

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

Description:

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

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.


Process finished with exit code 1

3 원인

구글링을 통해 알게 되었다.
이 에러가 발생하는 경우는 서버를 구동하려고 할 때 서버가 사용하려고 하는 port를 다른 프로세스나 프로그램이 점유하고 있는 경우이다. 일반적으로 서버를 정상적이지 않은 방법으로 종료하거나 종료된 경우 사용자에게는 사용을 하지 않는 것처럼 보이지만 실제로는 서버가 종료되지 않아서 다시 서버를 실행시킬 때 자주 나타나는 문제이다

생각해보니 -0 -;; 그냥 프로젝트를 꺼버린..기억이.. 서버가 실제로 종료되지 않음을 깨달았다.

4 해결

이미 다른 프로세스가 사용하려는 포트를 사용 중 일 때 해결방법으로는 2가지 정도를 제시할 수 있는데 첫 번째는 강제로 프로세스를 종료시키는 방법이고, 두 번째는 사용하려는 port를 변경하는 방법이다. 여기서는 프로세스를 강제로 종료해서 해결하는 방법을 다룬다. port를 변경하는 방법은 사용 환경에 따라 상이한 내용이 많아서 상황에 맞는 port 변경 방법을 찾아서 적용해야 한다.

프로세스 강제 종료

📢- Terminal 창에 입력하여 종료함

Mac

// 현재 사용하고 있는 tomcat 프로세스 목록을 출력한다.
ps -ef | grep tomcat  

// 위 명령어를 통해 출력된 프로세스 목록의 특정 process_id를 입력하여 강제 종료시킨다.
kill -9 [process_id]  

Window

// 현재 사용하고 있는 8080 포트를 사용하는 네트워크 통계 정보를 출력한다.
netstat -ano | findstr 8080

// 위 명령어를 통해 출력된 목록의 process_id를 입력하여 강제 종료시킨다.
taskkill /F /pid [process_id]

Ubuntu/Linux

// 현재 사용하고 있는 8080 포트를 사용하는 네트워크 통계 정보를 출력하거나 톰캣 프로세스 목록을 출력한다.
netstat -lnp | grep 8080 or ps -ef | grep tomcat

// 위 명령어를 통해 출력된 목록의 process_id를 입력하여 강제 종료시킨다.
kill -9 [process_id]

프로세스 강제 종료 예시 (Window)

만약 프로세스를 강제로 종료하는 방법을 써도 해결이 안 된다면 마지막으로는 컴퓨터 혹은 서버를 재부팅해보도록 하자. 가끔 단순히 컴퓨터터나 서버를 재시작하는 것만으로도 문제가 해결되곤 한다.

profile
개발자꿈나무

0개의 댓글