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

116

我有一个问题,无法在IntelliJ IDE中设置应用程序的调试模式,但运行模式是正常的。

我的操作系统是Windows 7,IDE是IntelliJ IDEA,Web容器是Tomcat 6。我已经尝试了很长时间,更改了HTTP端口和JMX端口,但仍然无法解决问题。

当我使用IntelliJ设置应用程序的调试模式时,失败了,并且事件日志如下:

16:05:35 Error running tomcat: Unable to open debugger port : java.net.BindException "Address already in use: JVM_Bind".


Tomcat6 允许调试的常规做法和端口是什么?您可能需要启用一些标志/设置... - vikingsteve
@vikingsteve 谢谢!这只是偶尔发生的情况,当我重新启动电脑时,一切都正常。可能是某个端口冲突了,但我不知道是哪一个。 - feng smith
很酷 :) 还有一些实用的工具可以查看哪个应用程序正在占用某个端口 - 值得使用这样的工具来快速识别冲突的来源。在最糟糕的情况下,查看Windows任务管理器并停止tomcat.exe、java.exe等进程可能会有所帮助。 - vikingsteve
必须小心!如果您不是管理员或根用户,则不得将HTTP端口设置为低于1024。否则,您将始终收到错误消息“运行Tomcat时出错:无法打开调试器端口”。 - tiramisu
31个回答

192
问题的关键在于调试器端口。我遇到了同样的问题,杀死了监听8081端口(我的http端口)、1099端口(JMX端口)、Tomcat关闭端口、每个java.exe进程,但仍然没有效果。
事实上,调试器端口是不同的。如果您运行应用程序,它将通过您为Tomcat配置的端口(8080、8081或其他)进行传输。但是,如果您以调试模式运行它,则会通过不同的端口进行传输。
如果您从IntelliJ编辑Tomcat配置,请转到最后一个选项卡 启动/连接。这里查看调试模式的配置,您会看到它的端口。我的是50473。我将其更改为50472,然后一切都重新开始工作了。

19
谢谢,它有效了。对于那些想通过关闭占用端口的进程来解决问题的人,可以打开任务管理器->性能->资源监视器->网络,在那里可以找到该进程。 - matrix
7
很遗憾没有“自动指定未使用端口”的选项XD。 - Gandalf
非常感谢。- @T.M. 我也在终止所有进程。 - Raj Rajeshwar Singh Rathore
5
我采纳了更改端口的建议,但必须将其更改为远离50473的其他端口。 我尝试过50450、50500和50400,但所有这些端口都收到了相同的错误消息。最终成功的方法是选择8085(我之所以选择它,仅因为它接近我的服务器8080端口)。 - rhavelka
2
如果这不起作用,请确保检查事件日志以查找前置错误。在我的情况下,JMX端口实际上是被阻止的,但调试器端口消息覆盖了它。解除JMX端口的阻止可以解决我遇到的两个错误消息,不确定为什么IntelliJ也会抱怨调试器端口。 - kjosh
显示剩余4条评论

76

如果您使用的是Windows系统,您可以通过切换到共享内存调试来完全避免套接字问题。

在此输入图片描述


8
最终帮助我解决问题的是这个方法。在使用这个方法之前,我需要每隔几个小时更换端口,有时甚至这也无济于事……关闭Java进程也没有效果。 - IntelliData
非常感谢您的建议。在更改为共享内存后,IntelliJ出现了另一个问题(我的server.xml已损坏)。已修复并切换回Transport。一切都很好。 - Jacques Koorts
6
在我的情况下,这非常令人沮丧,因为从未有任何进程使用IntelliJ所说的已被占用的端口。这个选项似乎起作用了,希望我永远不再浪费时间使用诊断工具来查找IntelliJ报告的这些不存在的进程。 - user1445967
谢谢这个提示。在我的情况下,这突然发生了,没有任何已知的修改 - 既没有更新也没有安装新程序。就在使用IntelliJ数月后的Windows 7重启之后。在我的其他计算机上没有发生这种情况。也没有任何程序使用该端口。我想找到一个解释。 - Pere
2
这个问题值得更多的赞。解决了我的问题。 - Rai

61

对于我来说,IntelliJ的事件日志(右下角)显示了以下日志:

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

充分更改权限对我起了作用。


关键在于查看“事件日志”,之前的错误是根本原因。 - yunandtidus
这是最好的答案。完美运作! - Manoj Shrestha
感谢您的回答,解决了我几个月来的问题。 - saba safavi

19

我在使用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端口 - 你可以在enter image description here找到它。
  2. 在“启动/配置”中,有一个调试选项,只需点击即可。 enter image description here

检查内容: 如果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或调试端口有问题,只需使用唯一的JMX和调试端口即可解决。

希望这能帮助到某些人。


2
谢谢。我总是运行多个IntelliJ实例。 - cs_pupil
3
谢谢!虽然我收到了有关调试器端口的错误提示,但问题实际上是重复使用了 JMX 端口。 - Florian Wicher

11

这对我来说一直有效(当我执行像重新启动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进程并结束它来解决了这个问题。现在重新运行应用程序,应该就没问题了。你也可以通过命令行或shell(Linux)来实现,但我发现这种方法更简单。


7

我通过以下方式解决了此问题。

  1. 我尝试关闭所有java.exe进程,但这是无用的。
  2. 然后我尝试删除Tomcat服务器
  3. 我重新部署了项目并重新启动了项目,它就正常工作了。

请参阅以下链接获取更多信息:

删除Tomcat Delete Tomcat

添加新的Tomcat Add a new Tomcat


我用自己的方法解决了这个问题,为什么不与其他人分享呢? - Abbot
抱歉,看起来你在提出一个新问题。由于使用了现在时态(“我有同样的问题”),让我感到困惑了。 - adiga
没问题。已批准待处理的回答编辑,应该修复所有语法错误。 - adiga

5

很遗憾其他解决方案都没用。 这个方案对我起了作用。我只是将调试器端口更改为其他端口号。

Intelij->偏好设置->构建、执行、部署->调试器->内置服务器->端口(更改数值)

enter image description here


5

我遇到了这个完全相同的消息。

原因是一些IDE(我使用Eclipse和Intellij)无法关闭Tomcat服务器。或者在它能够这样做之前崩溃了。

解决方法是导航到C:\ ... \ apache-tomcat-xxx \ bin并运行shutdown命令。


4

我的解决方法是将调试端口从54444更改为7070

输入图像说明


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接