[intellij-idea] IntelliJ IDEA에서 디버거 포트를 열 수 없습니다.

IntelliJ IDE를 사용하여 디버그 모드에서 응용 프로그램을 설정할 수 없지만 실행 모드는 괜찮다는 문제가 있습니다.

내 OS는 Windows 7, IDE는 IntelliJ IDEA, 웹 컨테이너는 Tomcat 6입니다. 오랫동안 시도해 보았고 HTTP 포트와 JMX 포트를 변경했지만 작동하지 않았습니다.

IntelliJ를 사용하여 디버그 모드에서 앱을 설정할 때 실패하고 이벤트 로그는 다음과 같습니다.

16:05:35 tomcat 실행 오류 : 디버거 포트를 열 수 없습니다. java.net.BindException “이미 사용중인 주소 : JVM_Bind”.



답변

문제의 핵심은 디버거 포트에 있습니다. 나는 같은 문제를 겪고 있었고 포트 8081 (내 http 포트), 1099 (JMX 포트), tomcat 종료 포트, 모든 java.exe에서 수신 대기하는 모든 프로세스를 죽이고 있었고 여전히 아무것도 없었습니다.

문제는이 디버거 포트 가 다르다는 것입니다. 응용 프로그램을 실행하면 Tomcat이 구성한 포트 (8080, 8081 등)를 통과합니다. 그러나 디버그 모드에서 실행하면 다른 포트를 통과합니다.

IntelliJ에서 Tomcat 구성을 편집하면 마지막 탭은 Startup / Connection 입니다. 여기에서 디버그 모드 의 구성을 확인하면 해당 포트가 표시됩니다. 내 것은 50473이었습니다. 나는 그것을 50472로 바꾸었고 모든 것이 다시 작동하기 시작했습니다.


답변

나를 위해 IntelliJ Event Log(오른쪽 하단 모서리)에는 로그가 있습니다.

Error running EntitmentTooling-Debug: Cannot run program "/path-to/apache-tomcat-8.5.15/bin/catalina.sh" (in directory "path-to/apache-tomcat-8.5.15/bin"): error=13, Permission denied

Error running EntitmentTooling-Debug: Unable to open debugger port (127.0.0.1:58804): java.net.SocketException "Socket closed"

명령

$ chmod a+x /path-to/apache-tomcat-8.5.15/bin/catalina.sh

권한을 충분히 변경하는 것이 저에게 효과적이었습니다.


답변

Windows를 사용하는 경우 공유 메모리 디버깅으로 전환하여 소켓 문제를 완전히 우회 할 수 있습니다.

여기에 이미지 설명 입력


답변

이것은 일관되게 작동합니다 (예를 들어 통합 테스트를 실행할 때 다시 시작 바람둥이와 같은 일을 할 때 가끔 발생합니다)

1) 포트 1099가 열려있는 프로세스 찾기

sudo netstat -anp | grep tcp | grep 1099
cp6       0      0 :::1099                 :::*                    LISTEN      9857/java

2) 죽여라

kill 9857

3) Tomcat을 시작합니다.


답변

Windows 7과 IntellijIdea 14에서도 동일한 문제가 발생했습니다. CTRL + ALT + ESc로 이동하여 Java 프로세스를 종료하고 Java를 찾아서 종료했습니다. 이제 다시 실행하면 응용 프로그램이 다시 작동합니다. 명령 줄이나 셸 (리눅스)로도 수행 할 수 있지만이 작업이 더 쉽습니다.


답변

IntelliJ를 사용하는 동안 동일한 오류가 발생했습니다. IntelliJ의 여러 인스턴스를 시작했기 때문에. 두 인스턴스를 시작하는 동안 제대로 시작되었습니다. 그러나 다른 것을 시작할 때 아래 오류가 발생했습니다.

unable to open debugger port (127.0.0.1:debug-port-number) java.net.socketexception interrupted function call accept failed

기본적으로 IntelliJ에서 디버깅과 관련된 포트를 확인할 수있는 두 곳이 있습니다.

  1. JMX 포트-이것은
    여기에 이미지 설명 입력
  2. 시작 / 구성에서 디버그 옵션이 있습니다.
    여기에 이미지 설명 입력

확인 사항 : IntelliJ에서 위의 오류가 발생하면 위에 나열된 포트 중 하나에 문제가 있음을 의미합니다. 이 열린 이벤트 로그 (오른쪽 아래에서 사용 가능)를 확인하고 정확한 메시지를 확인합니다. 이벤트 로그에는 아래와 같은 메시지가 표시됩니다.

11:19 PM    Error running 'Tomcat-tp': Address localhost:1098 is already in use

11:19 PM    Error running 'Tomcat-tp': Unable to open debugger port (127.0.0.1:51787): java.net.SocketException "Interrupted function call: accept failed"

해결 방법 -1
작동하는 것으로 시작하지 않는 현재 intelliJ의 JMX 포트를 확인하고 JMX 포트가 IntelliJ 인스턴스 내에서 중복되지 않았는지 또는 컴퓨터에서 실행중인 소프트웨어가이 포트를 사용하고 있지 않은지 확인합니다.

해결 방법 -2
JMX가 중복되지 않은 경우 디버그 포트를 확인하고 모든 IntelliJ 인스턴스를 체크인하고 변경합니다.

확실히 JMX 또는 디버그 포트에 문제가있는 경우 고유 한 JMX 및 디버그 포트를 사용하면 작동합니다.

이것이 누군가를 도울 수 있기를 바랍니다.


답변

이 방법으로 문제를 해결했습니다.

  1. 모든 java.exe 프로세스를 죽이려고했지만 쓸모가 없었습니다.
  2. 그런 다음 Tomcat 서버 삭제를 시도했습니다.
  3. 프로젝트를 다시 배포하고 프로젝트를 다시 시작했는데 제대로 작동했습니다.

자세한 내용은 다음 링크를 참조하십시오.

Tomcat 삭제
Tomcat 삭제

새 Tomcat 추가
새 Tomcat 추가