레거시모음/오류해결

[오류해결] Several ports (8005, 8080) required by Tomcat v9.0 Server at localhost are already in use

gakko 2022. 2. 8. 18:00

Tomcat 서버를 사용할 때 생기는 서버 오류이다. 오류에 대한 설명은 아래와 같다.

 

Several ports (8005, 8080) required by Tomcat v9.0 Server at localhost are already in use. 
The server may already be running in another process, or a system process may be using the port. 
To start this server you will need to stop the other process or change the port number(s).

 

서버를 Run 했을 때 이런 경고창과 함께 발생한다.

이 오류의 원인은 이미 (8005, 8080) 포트를 다른 톰캣서버에서 사용하고 있기 때문에 발생한다.

다른 프로젝트에서 서버를 동작시키고 끄지 않았을 때 발생하는 오류인 것이다.

해결 방법은 3가지이다.

 

① IDE에서 직접 종료

② 작업관리자로 강제 종료

③ 명렴 프롬프트를 통해 종료

 

차례대로 알아보자.

 

 

 

 

1. IDE에서 직접 서버 종료


어떤 프로젝트에서 실행하고 있었는지 기억하고 있다면, 그 IDE를 통해 작업공간에 다시 접속해보자.

접속해서 서버 콘솔을 클릭하고 실행되고 있는 지 확인한 후 (실행되고 있다면 started라고 적혀있을 것이다.)

만약 서버가 돌아가고 있다면, 우클릭 stop만 눌러도 다른 프로젝트에서 톰캣서버를 사용할 수 있게 된다.

 

 

 

 

 

2. 작업관리자로 서버 강제 종료


ctrl + alt + Delete 를 눌르고 작업관리자를 선택하자.

Apache Commons Deamon Service Runner 라는 이름을 가진 프로그램이 돌아가고 있을 것이다.

선택하고 작업 끝내기를 클릭하면 해결된다.

 

 

 

 

 

3. cmd에서 CLI 명령어로 해결


관리자권한으로 cmd를 윈도우 검색해 명럼 프롬프트를 열고 아래 명령어를 입력하자.

netstat -p tcp -ano

포트에 연결된 pid를 확인하기 위해 사용하는 명령어이다.

 

 

- 결과

활성 연결

  프로토콜  로컬 주소              외부 주소              상태            PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1148
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:902            0.0.0.0:0              LISTENING       4600
  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       4600
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       5264
  TCP    0.0.0.0:5040           0.0.0.0:0              LISTENING       9696
  TCP    0.0.0.0:5357           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:7680           0.0.0.0:0              LISTENING       2528
  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       4116
  TCP    0.0.0.0:14430          0.0.0.0:0              LISTENING       11732
  TCP    0.0.0.0:14440          0.0.0.0:0              LISTENING       11732
  TCP    0.0.0.0:19812          0.0.0.0:0              LISTENING       10176
  TCP    0.0.0.0:21300          0.0.0.0:0              LISTENING       19576
  TCP    0.0.0.0:27036          0.0.0.0:0              LISTENING       10896
  TCP    0.0.0.0:33060          0.0.0.0:0              LISTENING       5264
  TCP    0.0.0.0:47546          0.0.0.0:0              LISTENING       3436
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING       952

위와 같은 결과가 나올텐데 여기에서 로컬주소가 8005나 8080인 것을 찾으면 된다.

PID를 보면 4116으로 되어있다. 이제 이 피드를 종료시키면 된다.

 

taskkill /f /pid 4116

task를 kill하는 명령어이다.

성공: 프로세스(PID 4116)가 종료되었습니다.

성공적으로 종료되면 위와 같은 메세지가 발생한다.

 

 

** 주의 **

관리자 권한으로 열지 않으면 아래와 같은 오류가 발생하니 주의하자.

오류: 프로세스(PID 4116)를 종료할 수 없습니다.
원인: 액세스가 거부되었습니다.