[java] “java.net.BindException : 이미 사용중인 주소 : JVM_Bind”오류를 어떻게 해결합니까?

이클립스 에서이 오류가 발생했습니다.

run:
     [java] Error creating the server socket.
     [java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
     [java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
     [java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds

왜 지금 나타 났는지 잘 모르겠지만 몇 시간 전에 제대로 작동했습니다. 컴퓨터를 다시 시작해야합니까? 그것의 바닥에 어떻게 도착합니까? 조언이나 조언을 부탁드립니다.



답변

예, 다른 프로세스가 동일한 포트에 바인딩되어 있습니다.

JVM_BIND 오류가 발생할 때마다 Windows Sysinternals의 TCPView (Windows 만 해당) 가 가장 좋아하는 앱입니다. 어떤 프로세스가 어떤 포트에서 수신 대기 중인지를 보여줍니다. 또한 프로세스를 종료하거나 방해가되는 연결을 닫을 수있는 편리한 컨텍스트 메뉴를 제공합니다.


답변

프로세스가 실행중인 포트를 알고 있으면 다음을 입력하십시오
lsof -i:<port>..

예를 들어, lsof -i:8080포트 8080에서 실행중인 프로세스 (pid)를 나열합니다.

그런 다음 프로세스를 종료하십시오. kill <pid>


답변

창에서

netstat -ano

모든 프로토콜, 포트 및 프로세스 수신을 나열합니다. 사용하다

taskkill -pid "proces to kill" /f

포트를 수신하는 프로세스를 종료합니다. 예 :

 taskkill -pid 431 /f


답변

Mac에서 :

프로세스 종료
터미널 :kill <pid>

pid 찾기 :
터미널 :lsof -i:<port>

Diego Pino의 답변에서


답변

Ubuntu / Unix 에서는 아래 설명 된대로이 문제를 2 단계로 해결할 수 있습니다.

  1. 유형 netstat -plten |grep java

    이것은 다음과 유사한 출력을 제공합니다.

    tcp   0   0 0.0.0.0:8080   0.0.0.0:*  LISTEN   1001  76084  9488/java       

    다음 8080은 Java 프로세스가 청취중인 포트 번호 9488이며 프로세스 ID (pid)입니다.

  2. 점유 된 포트를 해제하려면 kill명령을 사용하여이 프로세스를 종료해야합니다 .

    kill -9 9488

    9488이전의 프로세스 ID입니다. 우리가 사용 -9하는 프로세스를 강제로 중지.

이제 포트가 사용 가능해야하며 서버를 다시 시작할 수 있습니다.


답변

(Windows 만 해당)

프로세스를 종료하려면 먼저 프로세스 ID (pid)를 찾아야합니다.

명령을 실행하여 :

netstat -ano | findstr :yourPortNumber

아래 그림과 같이

프로세스 ID (PID)를 얻습니다. 이제 동일한 프로세스를 종료하려면 다음 명령을 실행하십시오.

taskkill /pid yourid /f

여기에 이미지 설명을 입력하십시오


답변

동일한 포트에서 다른 프로세스가 실행 중입니다.

작업 관리자에서 실행되는 java.exe 서비스 중 하나를 강제 종료 할 수 있습니다. 아무것도 작동하지 않으면 컴퓨터를 다시 시작해도 문제가 해결됩니다. 이전 테스트에서 소켓을 종료하지 않은 것처럼 보입니다. 도움이 되었기를 바랍니다.