无法在IntelliJ IDEA中打开调试器端口


79

我有一个问题,我无法使用IntelliJ IDE在调试模式下设置应用程序,但运行模式可以。

我的操作系统是Windows 7,IDE是IntelliJ IDEA,Web容器是Tomcat6。我尝试了很长时间,更改了HTTP端口和JMX端口,但是没有用。

当我使用IntelliJ在调试模式下设置应用程序时,它失败了,事件日志为:

16:05:35运行tomcat时出错:无法打开调试器端口:java.net.BindException“地址已在使用中:JVM_Bind”。


tomcat6允许调试的正常做法和端口是什么?您可能需要启用一些标志/设置...
vikingsteve 2014年

@vikingsteve谢谢!Tt是一种偶然的情况,当我重新启动计算机时,一切正常,可能是某些端口冲突,但我不知道哪个端口是冲突的。
冯·史密斯,2014年

酷:)也有一些方便的工具可以查看哪个应用程序持有端口-也许值得使用这样的工具来快速识别冲突源。在最坏的情况下,在Windows任务管理器中查找并停止tomcat.exe,java.exe等可能会有所帮助。
vikingsteve 2014年

必须小心!如果您不是管理员或root用户,则不得将http端口设置为1024以下。否则,您始终会收到错误消息“运行tomcat时出错:无法打开调试器端口”
tiramisu

Answers:


143

问题的关键在于调试器端口。我遇到了同样的问题,我杀死了监听端口8081(我的http端口),1099(JMX端口),tomcat shutdown端口,每个java.exe的所有进程,但仍然一无所有。

问题是此调试器端口不同。如果运行该应用程序,它将通过您为Tomcat配置的端口8080、8081或其他任何端口。但是,如果您在“调试”模式下运行它,它将通过另一个端口。

如果您要从IntelliJ编辑Tomcat配置,则最后一个选项卡是Startup / Connection。在这里查看调试模式的配置,然后查看其端口。我的是50473。我将其更改为50472,然后一切又重新开始工作。


12
谢谢,它有效。对于那些想要通过关闭持有端口的进程来解决它的人,请打开任务管理器->性能->资源监视器->网络,您可以在那里找到进程。
矩阵

4
没有“自动分配未使用的端口”选项XD
Gandalf,

非常感谢。-@TM我也杀死了所有进程。
Raj Rajeshwar Singh Rathore

谢谢,从启动/连接更改端口为我做了
Csa77 '19

遗憾的是Intellij 2019.2.3仍然会发生这种情况。更改调试端口是我能够使其正常工作的唯一方式(而不是重新启动计算机)
cakidnyc19年

53

对我而言,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

谢谢您的回答几个月后解决了我的问题
saba safavi

31

如果您在Windows上,则可以通过切换到共享内存调试来完全绕开套接字问题。

在此处输入图片说明


3
这最终帮助了我。在此之前,我需要每隔几个小时更改一次端口,有时甚至无济于事。结束java进程也无济于事。
IntelliData '18

非常感谢这个建议。更改为共享内存后,IntelliJ在另一个问题上失败了(我的server.xml已损坏)。修复它并移回运输。都好。
雅克·科特斯

在我看来,这非常令人沮丧,因为从来没有任何使用IntelliJ所说的端口的进程正在使用。该选项似乎有效,希望我再也不会浪费时间使用诊断工具来查找IntelliJ报告的这些不存在的进程。
user1445967

感谢您的提示。就我而言,这是突然发生的,没有进行任何已知的修改-既没有更新也不安装新程序。在使用IntelliJ几个月后,Windows 7重新启动之后。我的其他任何计算机上都没有发生。而且没有程序正在使用该端口。我想找到一个解释。
佩雷

9

这始终对我有效(例如,在运行集成测试时执行重新启动tomcat之类的事情时,有时会发生这种情况)

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并杀死了它。现在重新运行,该应用程序再一次应该没问题。您也可以使用命令行或shell(linux)来做,但是我发现这对我自己来说更容易


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端口,并验证是否在IntelliJ实例中未复制JMX端口,或者您的计算机上运行的任何软件均未使用此端口。

解决方案2- 如果未复制JMX,则请验证您的调试端口,检入所有IntelliJ实例并进行更改。

当然,只要使用唯一的JMX和Debug端口,JMX或Debug端口都会出现问题,它将起作用。

希望这会帮助某人。


1
谢谢。我总是有多个运行IntelliJ的实例。
cs_pupil,

谢谢!即使我收到有关调试器端口的错误,但问题实际上是重复的JMX端口。
Florian Wicher

5

我通过这种方式解决了这个问题。

  1. 我试图杀死所有的java.exe进程,但这是没有用的。
  2. 然后我尝试删除Tomcat服务器
  3. 我重新部署了该项目,然后重新启动了该项目,并且该项目可以正常工作。

有关更多信息,请参见以下链接:

删除Tomcat 删除Tomcat

添加一个新的Tomcat 添加一个新的Tomcat


我以自己的方式解决了这个问题。为什么不与他人分享?
阿伯(Abbot)

抱歉。您好像在问一个新问题。由于当前时态而感到困惑(“我有同样的问题”)
adiga

没关系。批准了对答案的待定修改,该修改应解决所有语法错误。
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本地主机。当我在主机文件中添加127.0.0.1 localhost时,一切正常。


1
我遇到了同样的问题,这个解决方案也帮了我大忙。或者,在Intellij Debug配置中提供IP,而不是主机名“ localhost”。
martin_wun

2

有多种原因。
-调试器端口可能存在问题---请将其更改为解决(TM回答)
-intellij缓存可能存在一些问题-无效的缓存并重新启动将解决它(冯·史密斯回答)
-可能有任何其他端口(例如JMX,AJP)的问题---请同时更改这些端口号。
我想将此添加为评论,但代表不足


2

对我唯一有效的方法是转到Windows上的任务管理器,并通过右键单击->结束任务结束所有正在运行的Java进程。


2

在IntelliJ的Tomcat配置的“服务器”选项卡中,将JMX端口更改为另一个数字。


这对我有用,但被接受的答案没有。
山姆·奥罗佐

2

不幸的是,所有其他解决方案均无效。这对我有用。我只是将调试器端口更改为其他端口号。

Intelij->首选项->构建,执行,部署->调试器->内置服务器->端口(更改值)

在此处输入图片说明


1

有时候,当我重新启动计算机时,一切正常。也许有港口冲突。

重新启动计算机可以正常工作,因为Java或Tomcat实例在重新启动过程中被杀死了。您还可以考虑从任务管理器中终止特定进程

如果context.xml文件中存在问题,也会发生这种情况。就我而言,我不小心更改了上下文值。


我尝试了所有提到的解决方案,但除了重新启动计算机外,其他任何方法均无用。
萨拉·塔曼

1

在我的情况下,上述方法均无效,即在运行配置中更改端口号,计算机重新启动,使IntelliJ中的缓存无效,杀死netstat中显示的过程(nestat -anob | findstr <port-number>然后是tskill <pid>)。最终唯一有用的是通过startup.bat和手动启动和关闭tomcat shutdown.bat(您应该.sh在linux和macOS上使用对应的文件)。


1

更改在Intelli J中配置的服务器的调试端口。

它将被修复。在此处输入图片说明


即使更改后,它也无法正常工作..我已经打开了多个实例,但其中有几个实例并不能全部运行。
库什瓦哈

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无法在我在“运行”配置中选择的端口上运行,因此我无法调试我的服务。


0

就我而言,我在IntelliJ中打开了另一个项目,并且该项目中的Tomcat以调试模式运行。停止该Tomcat实例即可解决此问题。


0

我以为该异常通常发生在Tomcat未正确关闭而仍保留端口的情况下。通常,杀死所有监听1099端口的进程就足够了。对于窗口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“套接字已关闭”


0

只需重新启动Android Studio,然后再尝试所有操作即可。我现在正面临着同样的情况,并且我通过这种方式解决了它。

快乐的编码:)


0

对于任何来过类似消息的人:

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

这可能是由于某些完全独立的因素引起的,即,这不是端口配置。例如,如果您正在运行Tomcat,则可能是您有一个invalid 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命令PID用户FD类型设备大小/关闭节点名称idea 437 devbratanand 56u IPv4 0xb2720e580a7d6483 0t0 TCP 10.17.130.41:55222->vmqp-cms-pan-app1.emeaak。本地:30303(已建立)IND00123:bin devbratanand $ kill -9437

-2

如果您在intelliJ中运行chmod a + x /path/to/tomcat/bin/catalina.sh

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.