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

Posted

技术标签:

【中文标题】无法在 IntelliJ IDEA 中打开调试器端口【英文标题】:Unable to open debugger port in IntelliJ IDEA 【发布时间】:2014-12-04 02:34:57 【问题描述】:

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

我的OS是Windows 7,IDE是IntelliJ IDEA,web container是Tomcat 6。我试了很久,改了HTTP端口和JMX端口,还是不行。

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

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

【问题讨论】:

tomcat6 允许调试的正常做法和端口是什么?您可能需要启用一些标志/设置... @vikingsteve 谢谢! tt是偶尔的情况,重启电脑后一切正常。可能是某个端口冲突,但我不知道是哪一个。 酷 :) 还有一些方便的工具可以查看哪个应用程序正在持有一个端口 - 也许值得使用这样的工具来快速识别冲突的来源。在最坏的情况下,查看 Windows 任务管理器并停止 tomcat.exe、java.exe 等可能会有所帮助。 一定要小心!如果您不是管理员或root,则不能将http端口设置为1024以下。否则您总是收到错误“运行tomcat时出错:无法打开调试器端口” 【参考方案1】:

偶尔会发生,当我重新启动计算机时,一切正常。可能是端口冲突。

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

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

【讨论】:

我尝试了所有提到的解决方案,除了重新启动计算机之外没有任何效果。 我认为这是一个被低估的解决方案。它将修复大多数权限问题/文件锁定问题/僵尸进程问题。这很不方便,但其他解决方案也很不方便,这个选项可以让你起床、伸展身体、喝一杯:)【参考方案2】:

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

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

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

【讨论】:

谢谢,它有效。而想要通过关闭持有端口的进程来解决的,打开任务管理器->性能->资源监视器->网络,就可以找到该进程。 可惜没有“自动分配未使用端口”选项XD 非常感谢。 - @TM值。我还杀死了所有进程。 我接受了更改端口的建议,但我不得不将其更改为远离 50473 的端口。我尝试了 50450、50500 和 50400,但所有这些端口仍然收到相同的错误消息。最终工作的是选择 8085(我之所以选择它,是因为它靠近我服务器的 8080 端口) 如果这不起作用,请务必检查您的事件日志是否有先前的错误。在我的情况下,JMX 端口是实际被阻止的端口,但调试器端口消息覆盖了它。在我的情况下,取消阻塞 JMX 端口解决了两条错误消息,不确定 IntelliJ 为何也抱怨调试器端口。【参考方案3】:

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

【讨论】:

【参考方案4】:

我有同样的问题,因为我的计算机的 DNS 未命中 127.0.0.1 localhost。 当我将 127.0.0.1 localhost 添加到我的主机文件时,它就可以了。

【讨论】:

我遇到了同样的问题,这个解决方案也为我解决了问题。或者,在 Intellij Debug 配置中提供 IP,而不是主机名“localhost”。【参考方案5】:

在调试时我遇到了这个问题:它适用于

    尝试将我的 Tomcat http 端口 8082 更改为 8083(在调试中 IntelliJ 和 Tomcat->conf->server.xml 上的配置) 尝试将 JMX 端口从 1099 更改为 1009。 尝试在调试中更改启动/连接中的调试端口 配置 杀死了TaskManager->Processes中的所有java进程。

【讨论】:

【参考方案6】:

这对我来说一直有效(例如,当我在运行集成测试时执行诸如重启 tomcat 之类的事情时,它会不时发生在我身上)

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

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

2) 杀死它

kill 9857

3) 启动 Tomcat。

【讨论】:

【参考方案7】:

对我来说,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是这里的关键,之前的错误是根本原因 这是最好的答案。完美运行! 感谢您的回答解决了我几个月后的问题【参考方案8】:

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

【讨论】:

【参考方案9】:

这有多种原因。 - 调试器端口可能有问题---请更改它以解决(T.M 回答) - Intellij 缓存可能存在一些问题 -- 使缓存无效并重新启动将解决它(feng smith 回答) - 任何其他端口可能存在问题,例如 JMX、AJP --- 请同时更改这些端口号。我想将此添加为评论,但没有足够的代表

【讨论】:

【参考方案10】:

以上方法都不适用于我的情况,即在运行配置中更改端口号、机器重启、IntelliJ 中的缓存无效、netstat 中显示的终止进程(nestat -anob | findstr <port-number> 然后tskill <pid>)。唯一有帮助的是通过startup.batshutdown.bat 手动启动和关闭tomcat(你应该在linux 和macOS 上使用对应的.sh 文件)。

【讨论】:

【参考方案11】:

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

    我试图杀死所有 java.exe 进程,但没有用。 然后我尝试删除Tomcat服务器 我重新部署了项目并重新启动了项目,它工作正常。

查看这些链接了解更多信息:

删除 Tomcat

添加一个新的 Tomcat

【讨论】:

我用我的方式解决了这个问题。为什么不与他人分享呢? 对不起。看起来你在问一个新问题。因为现在时而感到困惑(“我有同样的问题”) 没关系。批准对答案的待定编辑,该编辑应修复所有语法错误。【参考方案12】:

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

【讨论】:

您的回答似乎对 OP 问题没有帮助。他该怎么办?【参考方案13】:

我收到了这个确切的信息。

原因是某些 IDE(我使用 Eclipse 和 Intellij)未能关闭 tomcat 服务器。或者可能在它这样做之前就崩溃了。

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

【讨论】:

【参考方案14】:

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

【讨论】:

【参考方案15】:

相同的解决方案有多种。

    我们可以关闭 IDE(例如 IntellJ) 查找 IND00123:bin devbratanand$ lsof -i:30303 命令 PID 用户 FD 类型 设备尺寸/关闭节点名称 想法 437 devbratanand 56u IPv4 0xb2720e580a7d6483 0t0 TCP 10.17.130.41:55222->vmqp-cms-pan-app1.emea.akqa.local:30303(已建立) IND00123:bin devbratanand$ kill -9 437

【讨论】:

【参考方案16】:

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

【讨论】:

这最终帮助了我。在此之前,我需要每隔几个小时更换一次端口,有时即使这样也无济于事……结束 java 进程也无济于事。 非常感谢您的建议。更改为共享内存后,IntelliJ 在另一个问题上失败(我的 server.xml 已损坏)。修复它并移回运输。都很好。 就我而言,这非常令人沮丧,因为从来没有任何进程使用 IntelliJ 所说的已在使用的端口。这个选项似乎奏效了,希望我再也不会浪费时间使用诊断工具来查找 IntelliJ 报告的这些不存在的进程。 感谢您的提示。就我而言,这开始突然发生,没有任何已知的修改 - 既不是更新也不是新程序安装。在使用 IntelliJ 几个月后重新启动 Windows 7 之后。在我的任何其他计算机上都没有发生。并且没有程序正在使用该端口。我想找到一个解释。 这值得更多的支持。解决了我的问题。【参考方案17】:

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

【讨论】:

【参考方案18】:
    检查“运行”配置以查看它正在使用哪个端口 (8081)。 查找使用该端口lsof -t -i :8081的所有其他进程 终止该端口上的进程。 kill PROCESS_ID 在调试模式下运行 Tomcat。

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

【讨论】:

【参考方案19】:

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

【讨论】:

这对我有用,但接受的答案没有。【参考方案20】:

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

会修复的。

【讨论】:

即使更改后它也无法正常工作..我打开了多个实例,但其中很少有人无法正常工作。【参考方案21】:

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

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

【讨论】:

【参考方案22】:

在我的例子中,我在 IntelliJ 中打开了另一个项目,并让 Tomcat 在该项目中以调试模式运行。 停止该 Tomcat 实例解决了该问题。

【讨论】:

【参考方案23】:

我的假设是这个异常通常发生在 Tomcat 未正确关闭并仍然持有端口时。 通常杀死任何监听 1099 端口的进程就足够了。对于窗口 10:

netstat -aon | find "1099"


taskkill /F /PID $processId

【讨论】:

【参考方案24】:

如果您的独立/配置文件夹中的standalone.xml 找不到,您可能会收到相同的错误消息。至少我在使用 WildFly 14.0.1 时遇到了同样的错误:

【讨论】:

【参考方案25】:

我在使用 IntelliJ 时遇到了同样的错误。因为我已经启动了多个 IntelliJ 实例。在启动两个实例时,它正常启动。但是,当启动另一个时,它给出了以下错误。

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

基本上有两个地方可以检查与 IntelliJ 中调试相关的端口

    JMX 端口 - 你可以找到这是 在启动/配置中,有调试选项,只需单击此选项。

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

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

【讨论】:

谢谢。我总是有多个 IntelliJ 实例在运行。 谢谢!即使我收到有关调试器端口的错误,但问题实际上是重复的 JMX 端口。【参考方案26】:

在尝试所有这些之前,只需重新启动 Android 工作室。我现在也面临同样的问题,我通过这种方式修复它。

编码愉快:)

【讨论】:

【参考方案27】:

对于任何带着类似信息来到这里的人:

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>".

【讨论】:

【参考方案28】:

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

【讨论】:

【参考方案29】:

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

【讨论】:

【参考方案30】:

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

【讨论】:

以上是关于无法在 IntelliJ IDEA 中打开调试器端口的主要内容,如果未能解决你的问题,请参考以下文章

Idea IntelliJ远程调试教程

IntelliJ IDEA服务器远程调试报Connection refused

Postman联合IntelliJ IDEA 中Debug进行接口调试

Intellij IDEA 调试时的备用源

IntelliJ IDEA 调试器在调试 Maven 测试时跳过断点

intellij idea 无法启动或调试 spring-boot