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

时间:2014-10-09 08:29:19

标签: intellij-idea debug-mode

我遇到一个问题,我无法使用IntellJ IDE在调试模式下设置我的应用程序,但运行模式没问题。

我的操作系统是Windows 7,IDE是IntellJ IDEA,Web容器是Tomcat 6.我已经尝试了很长时间,更改了HTTP端口和JMX端口,但它没有用。

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

  

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

任何帮助将不胜感激。

30 个答案:

答案 0 :(得分:100)

问题的关键在于调试器端口。我遇到了同样的问题,我正在查杀每个进程侦听端口8081(我的http端口),1099(JMX端口),tomcat关闭端口,每个java.exe,但仍然没有。

事情是这个调试器端口是不同的。如果您运行该应用程序,它将通过Tomcat配置的端口,8080,8081或其他任何内容。但是如果你在调试模式下运行它,它会通过一个不同的端口。

如果您从IntelliJ编辑Tomcat配置,则最后一个选项卡是启动/连接。这里看看 Debug 模式的配置,你会看到它的端口。我的是50473.我把它改为50472,一切都开始了。

答案 1 :(得分:31)

对我来说,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

充分改变为我工作的特权。

答案 2 :(得分:9)

这对我来说始终如此(例如,当我运行集成测试时,我会不时地发生这样的事情,例如重启tomcat)

1)找到端口1099打开的进程

<% form_for membership remote: true, id: '#member_form' do |f| %>
  <%= f.select :permissions, [['none', 0], ['admin', 9]], onchange: '$("#member_form").trigger("submit");' %>
<% end %>

2)杀了它

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

3)启动Tomcat。

答案 3 :(得分:8)

我在Windows 7和IntellijIdea 14中遇到了同样的问题。 我通过CTRL + ALT + ESc杀死java进程,找到java并杀死它。 现在重新运行,应用程序再次应该没问题。 你也可以用命令行或shell(linux)来做,但我发现这对我自己来说更容易

答案 4 :(得分:7)

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

enter image description here

答案 5 :(得分: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端口-您可以找到这是 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或Debug端口肯定有问题,只需使用唯一的JMX和Debug端口即可。

希望这会对某人有所帮助。

答案 6 :(得分:4)

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

  1. 我试图杀死所有java.exe进程,但它没用。
  2. 然后我尝试删除Tomcat服务器
  3. 我重新部署了项目并重新启动了项目并且运行良好。
  4. 有关详细信息,请参阅以下链接:

    删除Tomcat Delete Tomcat

    添加新的Tomcat Add a new Tomcat

答案 7 :(得分:3)

我有这个确切的消息。

原因是某些IDE(我使用Eclipse和Intellij)无法关闭tomcat服务器。或者可能在崩溃之前崩溃。

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

答案 8 :(得分:2)

对我来说唯一有用的是转到Windows上的任务管理器,并通过右键单击结束所有正在运行的Java进程 - &gt;结束任务。

答案 9 :(得分:1)

调试时遇到了这个问题:它与

一起使用
  1. 尝试将我的Tomcat http端口8082更改为8083(在调试中 IntelliJ和Tomcat中的配置 - > conf-&gt; server.xml也是)
  2. 尝试将JMX端口从1099更改为1009。
  3. 尝试在调试中更改启动/连接中的调试端口     构造
  4. 杀死了TaskManager-&gt;进程中的所有java进程。

答案 10 :(得分:1)

这有多种原因 - 调试器端口可能存在问题---请更改它以解决(由T.M 回答)
- intellij cache可能存在一些问题 - 无效缓存和重启将解决它(由feng smith 回答)
- 任何其他端口可能存在问题,例如JMX,AJP ---请更改这些端口号 我想将此添加为评论但不足以代表

答案 11 :(得分:1)

None of above methods worked in my case i.e. changing port number in run configuration, machine restart, invalidate cache in IntelliJ, killing process shown in netstat (nestat -anob | findstr <port-number> and then tskill <pid>). The only thing that finally helped was starting and shutting down tomcat manually via startup.bat and shutdown.bat (you should use correspondig .sh files on linux and macOS).

答案 12 :(得分:1)

偶尔会发生这种情况,当我重新启动计算机时,一切正常。也许存在港口冲突。

重新启动计算机是可行的,因为在重新启动期间会杀死Java或Tomcat的实例。您还可以考虑从任务管理器中删除特定进程

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

答案 13 :(得分:1)

在IntelliJ中Tomcat配置的服务器标签中,将 JMX端口更改为另一个数字。

答案 14 :(得分:1)

我遇到同样的问题,因为我的计算机的DNS错过了127.0.0.1 localhost。 当我将127.0.0.1 localhost添加到我的主机文件时,它就变好了。

答案 15 :(得分:0)

我的修复是将调试端口从 54444 更改为 7070

enter image description here

答案 16 :(得分:0)

我遇到了这种情况,根据上述答案,我尝试更改端口,例如 编辑配置 -> 启动/连接 -> 调试 -> 更改端口 但它没有解决我的问题,因为我在调试模式下运行我的应用程序,所以一旦尝试在没有调试的情况下正常运行应用程序。 它解决了我的问题!

答案 17 :(得分:0)

在 Windows 中以管理员身份运行 IntelliJ 对我来说很神奇: Run as administrator

答案 18 :(得分: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 error log screenshot

答案 19 :(得分:0)

只需重新启动Android Studio ,然后再尝试全部操作。我现在正面临着同样的情况,因此可以通过这种方式解决它。

快乐编码:)

答案 20 :(得分:0)

如果在standalone / configuration文件夹中找不到standalone.xml,可能会收到相同的错误消息。至少在使用WildFly 14.0.1时出现相同的错误:

Error running WildFly 14.01.1: Unable to open debugger port (127.0.0.1:1233): java.net.SocketException "socket closed"

答案 21 :(得分:0)

我假设此异常通常在Tomcat关闭不当并仍然保留端口的情况下发生。 通常,杀死所有监听1099端口的进程就足够了。对于窗口10:

netstat -aon | find "1099"


taskkill /F /PID $processId

答案 22 :(得分:0)

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

答案 23 :(得分:0)

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

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

enter image description here

答案 24 :(得分:0)

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

它将得到解决。enter image description here

答案 25 :(得分:0)

  1. 检查“运行”配置,以查看它正在使用哪个端口(8081)。
  2. 使用该端口lsof -t -i :8081查找所有其他进程
  3. 杀死该端口上的进程。 kill PROCESS_ID
  4. 以调试模式运行Tomcat。

就我而言,我浪费了很多时间来更改调试器端口,但这不是问题。由于tomcat无法在我在 Run 配置中选择的端口上运行,因此我无法调试服务。

答案 26 :(得分:0)

在相同端口号上运行应用程序时,会发生这种情况。一种通过强行终止进程来实现此目的的方法。以管理员身份打开命令提示符。运行命令“ taskkill / IM“ java.exe” / F“。这在Windows中对我有用。让我知道这个是否奏效。

答案 27 :(得分:0)

在我的情况下,在tomcat / conf文件夹的server.xml中存在问题,其中我在另一个注释标记下有额外的注释标记。所以我认为,由于server.xml存在一些问题,因此无法启动Tomcat。此外,它将tomcat文件夹从安装目录复制到C:\ Users \ username.IntelliJIdea2017.2 \ system \ tomcat \ Tomcat_service

答案 28 :(得分:-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.emea.akqa.local:30303(ESTABLISHED) IND00123:bin devbratanand $ kill -9 437

答案 29 :(得分:-2)

如果你在intelliJ中运行它,请尝试chmod a + x /path/to/tomcat/bin/catalina.sh