IntelliJ IDEA에서 디버거 포트를 열 수 없습니다.


82

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

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

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

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


디버깅을 허용하는 tomcat6의 일반적인 관행과 포트는 무엇입니까? 당신은 ... 일부 플래그 / 설정을 활성화해야 할 수도 있습니다
vikingsteve

@vikingsteve 감사합니다! Tt는 가끔 컴퓨터를 다시 시작해도 괜찮습니다. 일부 포트가 충돌 할 수 있지만 어떤 포트인지 모르겠습니다.
풍수 스미스

Cool :) 또한 어떤 응용 프로그램이 포트를 보유하고 있는지 확인하는 몇 가지 편리한 도구가 있습니다. 이러한 도구를 사용하여 충돌의 원인을 신속하게 식별 할 가치가 있습니다. 최악의 경우 Windows 작업 관리자에서 찾고 tomcat.exe, java.exe 등을 중지하면 도움이 될 수 있습니다.
vikingsteve

조심해야합니다! : 당신은 당신이 항상 오류 "오픈 디버거 포트 수 없습니다 오류 바람둥이 실행"취득하는 관리자 또는 root.Or하지 않을 경우 1024 아래 http 포트를 설정하지 않아야
티라미수

답변:


148

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

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

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


12
감사합니다. 포트를 보유한 프로세스를 닫고 작업 관리자-> 성능-> 리소스 모니터-> 네트워크를 열어 문제를 해결하려는 사람들을 위해 프로세스를 찾을 수 있습니다.
매트릭스

4
무슨 "autoassign 사용하지 않는 포트"옵션 XD가 없음을 불쌍
간달프

감사합니다. -@TM 나는 또한 모든 프로세스를 죽이고 있었다.
Raj Rajeshwar Singh Rathore 2018

덕분에, 시작에서 포트를 변경 / 연결 나를 위해 그것을했다
Csa77

Intellij 2019.2.3에서 여전히 이런 일이 발생하는 것은 유감입니다. 디버그 포트의 변화는 (내 컴퓨터를 재부팅 제외) 나는 일에 그것을 얻을 수 있었던 유일한 방법입니다
cakidnyc

55

나를 위해 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

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


보고 Event Log키가 여기에있다, 이전의 오류가 원인이었다
yunandtidus

이것이 최고의 답변입니다. 완벽하게 작동합니다!
Manoj Shrestha

감사합니다 당신의 대답은 몇 달 후 내 문제를 해결
사바 safavi

34

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

여기에 이미지 설명 입력


3
이것이 결국 나를 도왔습니다. 그 전에는 몇 시간마다 포트를 변경해야했습니다. 때로는 도움이되지도 않았습니다. Java 프로세스를 종료해도 아무 작업도 수행되지 않았습니다.
IntelliData

이 제안에 감사드립니다. 공유 메모리로 변경 한 후 IntelliJ가 다른 문제로 실패했습니다 (내 server.xml이 손상됨). 그것을 고치고 Transport로 다시 옮겼습니다. 문제 없다.
Jacques Koorts

제 경우에는 IntelliJ가 이미 사용 중이라고 말하는 포트를 사용하는 프로세스가 전혀 없기 때문에 매우 실망 스럽습니다. 이 옵션은 효과가있는 것으로 보이며 IntelliJ에서보고 한 존재하지 않는 프로세스를 찾기 위해 진단 도구를 사용하여 다시는 시간을 낭비하지 않을 것입니다.
user1445967

이 팁에 감사드립니다. 제 경우에는 업데이트 나 새 프로그램 설치가 아닌 알려진 수정없이 갑자기 발생했습니다. IntelliJ를 몇 달간 사용한 후 Windows 7을 재부팅 한 직후. 내 다른 컴퓨터에서는 발생하지 않습니다. 그리고 그 포트를 사용하는 프로그램이 없습니다. 설명을 찾고 싶습니다.
Pere

10

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

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

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

2) 죽여라

kill 9857

3) Tomcat을 시작합니다.


8

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


7

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
감사합니다. 항상 IntelliJ의 여러 인스턴스가 실행 중입니다.
cs_pupil

감사! 디버거 포트에 대한 오류를 수신했지만 실제로 문제는 중복 된 JMX 포트였습니다.
Florian Wicher

5

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

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

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

Tomcat 삭제 Tomcat 삭제

새 Tomcat 추가 새 Tomcat 추가


내 방식으로 문제를 해결했습니다. 다른 사람들과 공유하지 않으시겠습니까?
Abbot

죄송합니다. 새로운 질문을하는 것 같습니다. 현재 시제 때문에 혼란스러워
졌습니다

괜찮아요. 모든 문법 오류를 수정해야하는 답변에 대한 보류중인 편집을 승인했습니다.
adiga

3

디버그하는 동안이 문제가 발생했습니다.

  1. 내 Tomcat http 포트 8082를 8083으로 변경하려고 시도했습니다 (IntelliJ의 디버그 구성 및 Tomcat-> conf-> server.xml에서도)
  2. JMX 포트를 1099에서 1009로 변경하려고했습니다.
  3. 디버그 구성의 시작 / 연결에서 디버그 포트 변경을 시도했습니다.
  4. TaskManager-> Processes에서 모든 Java 프로세스를 종료했습니다.

3

나는이 정확한 메시지를 받았다.

그 이유는 일부 IDE (Eclipse 및 Intellij 사용)가 tomcat 서버를 종료하지 못했기 때문입니다. 또는 그렇게하기 전에 추락했을 수도 있습니다.

이 솔루션은으로 이동했다 C:\...\apache-tomcat-xxx\bin실행 shutdown.


2

내 컴퓨터의 DNS가 127.0.0.1 localhost를 놓치기 때문에 동일한 문제가 있습니다. 내 호스트 파일에 127.0.0.1 localhost를 추가하면 괜찮아집니다.


1
나는 같은 문제가 있었고이 솔루션도 나를 위해 트릭을했습니다. 또는 호스트 이름 "localhost"대신 Intellij 디버그 구성에 IP를 제공하십시오.
martin_wun

2

여기에는 여러 가지 이유가 있습니다.
- (응답 해결로 변경하십시오 --- 디버거 포트에 문제가있을 수 있습니다 TM )
-이 (응답 해결할 것 인 IntelliJ 캐시 --Invalidate 캐시 다시 시작 몇 가지 문제가있을 수 있습니다 풍수 스미스 )
-가있을 수 있습니다 JMX, AJP와 같은 다른 포트 문제 ---이 포트 번호도 변경하십시오.
나는 이것을 코멘트로 추가하고 싶었지만 충분한 담당자가 아닙니다.


2

나를 위해 일한 유일한 것은 Windows의 작업 관리자로 이동하여 마우스 오른쪽 버튼을 클릭-> 작업 종료로 실행되는 모든 Java 프로세스를 종료하는 것입니다.


2

에서 서버 인 IntelliJ에서 Tomcat 구성 탭, 변경 JMX 포트를 다른 번호로.


이것은 나를 위해 일했으며 수락 된 대답은 그렇지 않았습니다.
Sam Orozco

2

불행히도 다른 모든 솔루션은 작동하지 않았습니다. 이것은 나를 위해 일한 것입니다. 디버거 포트를 다른 포트 번호로 변경했습니다.

Intelij-> 기본 설정-> 빌드, 실행, 배포-> 디버거-> 내장 서버-> 포트 (값 변경)

여기에 이미지 설명 입력


1

가끔 컴퓨터를 다시 시작하면 모든 것이 정상입니다. 포트 충돌이있을 수 있습니다.

컴퓨터를 다시 시작하면 Java 또는 Tomcat 인스턴스가 다시 시작하는 동안 종료되기 때문에 작동합니다. 작업 관리자에서 특정 프로세스를 종료하는 것도 고려할 수 있습니다.

이는 context.xml 파일에 문제가있는 경우에도 발생합니다. 제 경우에는 우연히 컨텍스트 값을 변경했습니다.


나는 언급 된 모든 솔루션을 시도했지만 컴퓨터 다시 시작을 제외하고는 아무것도 작동하지 않았습니다.
Sarah Tammam

1

위의 방법 중 어느 것도 내 경우에는 작동하지 않았습니다. 즉, 실행 구성에서 포트 번호를 변경하고, 컴퓨터를 다시 시작하고, IntelliJ에서 캐시를 무효화하고, netstat에 표시된 프로세스 nestat -anob | findstr <port-number>를 종료합니다 ( tskill <pid>). 마침내 도움이 된 유일한 것은 startup.batshutdown.bat( .shLinux 및 macOS에서 해당 파일을 사용해야 함)을 통해 수동으로 tomcat을 시작하고 종료하는 것입니다 .


1

Intelli J에 구성된 서버의 디버그 포트를 변경합니다.

수정됩니다.여기에 이미지 설명 입력


변경 후에도 작동하지 않습니다. .. 여러 인스턴스를 열었고 일부는 작동하지 않습니다.
Kushwaha

0

제 경우에는 다른 주석 태그 아래에 추가 주석 태그가있는 Tomcat / conf 폴더의 server.xml에 문제가있었습니다. 그래서 server.xml에 문제가있어서 Tomcat을 시작할 수 없었던 것 같습니다. 또한 설치 디렉토리의 tomcat 폴더를 C : \ Users \ username.IntelliJIdea2017.2 \ system \ tomcat \ Tomcat_service로 복사합니다.


1
귀하의 답변은 OP 질문에 도움이되지 않는 것 같습니다. 그는 무엇을해야합니까?
Flummox-악하지 마십시오 SE

0

이것은 동일한 포트 번호에서 실행중인 응용 프로그램이있을 때 발생합니다. 프로세스를 강제 종료하여이를 수행하는 한 가지 방법입니다. 관리자 권한으로 명령 프롬프트를 엽니 다. 'taskkill / IM "java.exe"/ F'명령을 실행하십시오. 이것은 Windows에서 나를 위해 일했습니다. 이것이 작동하는지 알려주십시오.


0
  1. "실행"구성을 확인하여 사용중인 포트를 확인하십시오 ( 8081).
  2. 해당 포트를 사용하는 다른 모든 프로세스 찾기 lsof -t -i :8081
  3. 해당 포트에서 프로세스를 종료하십시오. kill PROCESS_ID
  4. 디버그 모드에서 Tomcat을 실행합니다.

제 경우에는 디버거 포트 변경에 많은 시간을 낭비 했지만 문제 가되지 않았습니다 . Tomcat은 Run configuration 에서 선택한 포트에서 실행할 수 없었기 때문에 서비스를 디버깅 할 수 없었습니다.


0

제 경우에는 IntelliJ에서 다른 프로젝트를 열고 해당 프로젝트에서 Tomcat을 디버그 모드로 실행했습니다. 해당 Tomcat 인스턴스를 중지하면 문제가 해결되었습니다.


0

이 예외는 일반적으로 Tomcat이 부적절하게 닫히고 여전히 포트를 보유 할 때 발생한다고 가정합니다. 일반적으로 1099 포트를 수신하는 모든 프로세스를 종료하는 것으로 충분합니다. Window 10의 경우 :

netstat -aon | find "1099"


taskkill /F /PID $processId

0

standalone / configuration 폴더에서 standalone.xml을 찾을 수없는 경우에도 동일한 오류 메시지가 표시됩니다. 적어도 WildFly 14.0.1을 사용할 때 동일한 오류가 발생합니다.

WildFly 14.01.1 실행 중 오류 : 디버거 포트를 열 수 없습니다 (127.0.0.1:1233) : java.net.SocketException "socket closed"


0

그냥 안드로이드 스튜디오를 다시 시작 이러한 모든 시도하기 전에. 나는 지금 똑같은 얼굴을하고 있고 나는 이것을 이렇게 고친다.

해피 코딩 :)


0

비슷한 메시지를 가지고 여기에 오는 사람을 위해 :

Unable to open debugger port (127.0.0.1:50470):
    java.net.SocketException "Interrupted function call: accept failed"

이것은 완전히 독립적 인 원인으로 인해 발생할 수 있습니다. 즉, 포트 구성이 아닙니다. 예를 들어 Tomcat을 실행하는 경우 잘못된 web.xml. 이벤트 로그에서 이전 오류를 확인하십시오.

Cannot load C:\...\conf\web.xml: ParseError at [row,col]:[480,29]
            Message: The element type "param-value" must be terminated by the matching end-tag "</param-value>".

IntellIj 오류 로그 스크린 샷


-1

동일한 솔루션이 여러 개 있습니다.

  1. IDE (예 : IntellJ)를 닫을 수 있습니다.
  2. t IND00123 : bin devbratanand $ lsof -i : 30303 COMMAND PID USER FD TYPE DEVICE SIZE / OFF NODE NAME idea 437 devbratanand 56u IPv4 0xb2720e580a7d6483 0t0 TCP 10.17.130.41:55222->vmqp-cms-pan-app1.emea.akqa. local : 30303 (ESTABLISHED) IND00123 : bin devbratanand $ kill -9437

-2

intelliJ에서 실행하는 경우 chmod a + x /path/to/tomcat/bin/catalina.sh 시도

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.