100

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

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

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

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

4

31 回答 31

173

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

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

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

于 2015-04-28T09:08:42.637 回答
59

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

充分改变对我有用的特权。

于 2017-05-24T05:19:54.667 回答
53

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

在此处输入图像描述

于 2018-07-06T01:50:16.983 回答
12

我在使用 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 和调试端口即可。

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

于 2020-03-22T18:13:29.297 回答
11

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

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

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

2)杀死它

kill 9857

3)启动Tomcat。

于 2017-01-24T05:14:04.647 回答
8

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

于 2016-02-22T21:54:42.783 回答
6

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

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

有关更多信息,请参阅这些链接:

删除 Tomcat 删除 Tomcat

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

于 2017-10-31T05:50:42.393 回答
4

我有这个确切的信息。

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

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

于 2017-11-13T15:29:55.860 回答
3

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

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

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

于 2014-10-11T02:41:51.017 回答
3

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

  1. 尝试将我的 Tomcat http 端口 8082 更改为 8083(在 IntelliJ 和 Tomcat->conf->server.xml 的调试配置中)
  2. 尝试将 JMX 端口从 1099 更改为 1009。
  3. 尝试在调试配置中更改启动/连接中的调试端口
  4. 杀死 TaskManager->Processes 中的所有 java 进程。
于 2016-06-20T10:06:49.253 回答
3

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

于 2017-07-26T15:41:50.730 回答
3

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

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

在此处输入图像描述

于 2019-07-07T08:49:24.590 回答
3

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

于 2016-05-24T01:52:22.977 回答
3

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

在此处输入图像描述

于 2021-05-14T11:33:06.387 回答
2

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

于 2019-02-16T10:15:58.200 回答
2

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

于 2018-02-06T20:58:50.320 回答
2

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

它将被修复。在此处输入图像描述

于 2019-06-14T09:36:42.330 回答
2

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

于 2017-10-12T10:07:07.227 回答
1

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

于 2019-09-24T14:33:47.947 回答
1

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

netstat -aon | find "1099"


taskkill /F /PID $processId
于 2019-12-12T09:35:46.387 回答
1
  1. 检查“运行”配置以查看它正在使用哪个端口 ( 8081)。
  2. 查找使用该端口的所有其他进程lsof -t -i :8081
  3. 杀死该端口上的进程。kill PROCESS_ID
  4. 在调试模式下运行 Tomcat。

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

于 2019-01-11T10:04:02.183 回答
0

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

于 2019-01-07T16:28:49.680 回答
0

我遇到了这种情况,作为上述答案,我尝试更改端口,例如 Edit Configuration -> Startup/Connection -> debug -> change the Port 但它没有解决我的问题,因为我在调试模式下运行我的应用程序所以一旦尝试正常运行应用程序而不进行调试。它解决了我的问题!

于 2021-01-28T09:20:38.133 回答
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 错误日志截图

于 2020-07-31T09:10:17.327 回答
0

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

快乐编码:)

于 2020-07-06T10:36:05.883 回答
0

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

于 2017-11-02T12:08:39.870 回答
0

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

运行 WildFly 14.01.1 时出错:无法打开调试器端口 (127.0.0.1:1233):java.net.SocketException

于 2019-12-20T13:48:36.950 回答
0

这个问题有时只是因为配置错误。

例如,请检查您是否在运行配置中定义了 SSL 端口号。如果是这样,并且如果您在 tomcat 的 server.xml 中没有正确的配置,那么将无法正确启动您的调试会话,并且很遗憾您将遇到同样的错误。我认为这可以显示为不同的错误。所以,在我看来,这也是一个想法问题。

解决方案是从 IDE 的运行配置中删除 SSL 端口号值。

#intellij-idea https://stackoverflow.com/questions/tagged/intellij-idea

于 2021-09-18T23:36:52.190 回答
-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-akapp1.emea。本地:30303(已建立)IND00123:bin devbratanand$ kill -9 437
于 2018-06-15T07:09:57.040 回答
-1

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

于 2021-01-21T10:40:07.363 回答
-2

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

于 2017-07-12T12:25:32.667 回答