블로그 이름

[ERROR] ExportException: Port already in use: 9000 본문

개발/오류

[ERROR] ExportException: Port already in use: 9000

Hide 2024. 11. 19. 23:14

서버를 켜려고 했는데 에러가 났다.

 

에러 내용은 JMX 포트가 9000인데, 해당 포트가 이미 사용중이어서 (이전에 켰던 JMX 포트가 정상 종료되지 않아서) 이다.

 

에러 로그는 다음과 같다.

 

Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9000; nested exception is: 
java.net.BindException: Address already in use: NET_Bind
jdk.internal.agent.AgentConfigurationError: java.rmi.server.ExportException: Port already in use: 9000; nested exception is: 
java.net.BindException: Address already in use: NET_Bind
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:491)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:447)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:599)
Caused by: java.rmi.server.ExportException: Port already in use: 9000; nested exception is: 
java.net.BindException: Address already in use: NET_Bind

...

 

 

해결방법

CMD 키고 netstat -a -o 로 활성화된 포트의 PID 를 확인 후,
taskkill /f /pid PID번호 명령어로 프로세스 종료 후 정상 동작하였다.

 

netstat 옵션
옵션 설명
netstat network status (네트워크 상태)를 의미
-a (all) 프로토콜(TCP, UDP 등)과 상태(LISTENING, ESTABLISHED 등)와 상관없이 모두 표시
-o PID(Process ID)를 표시

 

taskkill 옵션
taskkill [/f] [/im 프로세스이름] [/pid 프로세스PID번호] [/t] [/fi "필터"]
옵션 설명
/f 프로세스를 강제로 종료
/im 종료할 프로세스의 이름을 지정
/pid 종료할 프로세스의 PID(프로세스 식별자)를 지정
/t 지정된 프로세스와 그 프로세스로부터 시작된 모든 자식 프로세스를 종료
/fi 지정한 조건에 해당하는 프로세스를 종료. 이를 이용해 특정 서비스를 종료