我有一个问题,我无法使用 IntelliJ IDE 在调试模式下设置我的应用程序,但运行模式是可以的。
我的OS是Windows 7,IDE是IntelliJ IDEA,web容器是Tomcat 6。试了很久,改了HTTP端口和JMX端口,还是不行。
当我使用 IntelliJ 在调试模式下设置应用程序时,它失败并且事件日志是:
16:05:35 运行 tomcat 时出错:无法打开调试器端口:java.net.BindException“地址已在使用中:JVM_Bind”。
我有一个问题,我无法使用 IntelliJ IDE 在调试模式下设置我的应用程序,但运行模式是可以的。
我的OS是Windows 7,IDE是IntelliJ IDEA,web容器是Tomcat 6。试了很久,改了HTTP端口和JMX端口,还是不行。
当我使用 IntelliJ 在调试模式下设置应用程序时,它失败并且事件日志是:
16:05:35 运行 tomcat 时出错:无法打开调试器端口:java.net.BindException“地址已在使用中:JVM_Bind”。
问题的关键在于调试器端口。我遇到了同样的问题,我正在杀死监听端口 8081(我的 http 端口)、1099(JMX 端口)、tomcat 关闭端口、每个 java.exe 的每个进程,但仍然没有。
问题是这个调试器端口是不同的。如果您运行该应用程序,它将通过您为 Tomcat 配置的端口,8080、8081 或其他任何端口。但是如果你在调试模式下运行它,它会通过一个不同的端口。
如果您从 IntelliJ 编辑 Tomcat 配置,最后一个选项卡是Startup/Connection。这里去看看调试模式的配置,你会看到它的端口。我的是 50473。我把它改成了 50472,一切又开始工作了。
对我来说,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
充分改变对我有用的特权。
我在使用 IntelliJ 时遇到了同样的错误。因为我已经启动了多个 IntelliJ 实例。在启动两个实例时,它正常启动。但是,当启动另一个时,它给出了以下错误。
unable to open debugger port (127.0.0.1:debug-port-number) java.net.socketexception interrupted function call accept failed
基本上有两个地方可以检查与 IntelliJ 中的调试相关的端口
检查内容:如果 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 和调试端口即可。
希望这会对某人有所帮助。
这对我来说始终如一(例如,当我在运行集成测试时执行诸如重启 tomcat 之类的事情时,它会不时发生在我身上)
1)找到打开1099端口的进程
sudo netstat -anp | grep tcp | grep 1099
cp6 0 0 :::1099 :::* LISTEN 9857/java
2)杀死它
kill 9857
3)启动Tomcat。
我在 Windows 7 和 IntellijIdea 14 中遇到了同样的问题。我通过 CTRL+ALT+ESc 杀死了 java 进程,找到 java 并杀死它。现在重新运行,应用程序再次应该没问题..你也可以用命令行或shell(linux)来做,但我发现这对自己来说更容易
我通过这种方式解决了这个问题。
有关更多信息,请参阅这些链接:
删除 Tomcat
添加一个新的Tomcat
我有这个确切的信息。
原因是某些 IDE(我使用 Eclipse 和 Intellij)未能关闭 tomcat 服务器。或者可能在它这样做之前就崩溃了。
解决方案是导航到C:\...\apache-tomcat-xxx\bin
并运行shutdown
.
偶尔会发生,当我重新启动计算机时,一切正常。可能是端口冲突。
重新启动计算机可以正常工作,因为 Java 或 Tomcat 的实例在重新启动期间被终止。您还可以考虑从任务管理器中杀死特定进程
如果 context.xml 文件中存在问题,也会发生这种情况。就我而言,我不小心更改了上下文值。
调试时我遇到了这个问题:它适用于
这有多种原因。
- 调试器端口可能有问题---请将其更改为解决(由TM回答)
- Intellij 缓存可能存在一些问题 - 使缓存无效并重新启动将解决它(由feng smith回答)
- 可能有任何其他端口的问题,如 JMX、AJP --- 请同时更改这些端口号。
我想将此添加为评论,但没有足够的代表
我有同样的问题,因为我的计算机的 DNS 未命中 127.0.0.1 localhost。当我将 127.0.0.1 localhost 添加到我的主机文件时,它就可以了。
在IntelliJ 中 Tomcat 配置的服务器选项卡中,将JMX 端口更改为另一个数字。
唯一对我有用的是转到 Windows 上的任务管理器,并通过右键单击 -> 结束任务来结束所有正在运行的 Java 进程。
在我的情况下,上述方法均无效,即在运行配置中更改端口号、机器重启、IntelliJ 中的缓存无效、netstat 中显示的终止进程(nestat -anob | findstr <port-number>
然后tskill <pid>
)。最终唯一有帮助的是通过startup.bat
and手动启动和关闭 tomcat(您应该在 linux 和 macOS 上shutdown.bat
使用对应的文件)。.sh
在我的情况下,我在 IntelliJ 中打开了另一个项目,并让 Tomcat 在该项目中以调试模式运行。停止该 Tomcat 实例解决了该问题。
我假设此异常通常发生在 Tomcat 未正确关闭并仍保留端口时。通常杀死任何监听 1099 端口的进程就足够了。对于窗口 10:
netstat -aon | find "1099"
taskkill /F /PID $processId
8081
)。 lsof -t -i :8081
kill PROCESS_ID
就我而言,我在更改调试器端口上浪费了很多时间,但这不是问题。由于 tomcat 无法在我在运行配置中选择的端口上运行,我无法调试我的服务。
当您的应用程序在同一端口号上运行时,就会发生这种情况。一种方法是强行终止进程。以管理员身份打开命令提示符。运行命令'taskkill /IM“java.exe”/F'。这在 Windows 中对我有用。让我知道这个是否奏效。
我遇到了这种情况,作为上述答案,我尝试更改端口,例如 Edit Configuration -> Startup/Connection -> debug -> change the Port 但它没有解决我的问题,因为我在调试模式下运行我的应用程序所以一旦尝试正常运行应用程序而不进行调试。它解决了我的问题!
对于任何带着类似信息来到这里的人:
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>".
在尝试所有这些之前,只需重新启动 Android 工作室。我现在面临同样的情况,我通过这种方式修复它。
快乐编码:)
就我而言,Tomcat/conf 文件夹的 server.xml 中存在问题,我在另一个评论标签下有额外的评论标签。所以我认为,由于 server.xml 中存在一些问题,它无法启动 Tomcat。此外,它会将 tomcat 文件夹从您的安装目录复制到 C:\Users\username.IntelliJIdea2017.2\system\tomcat\Tomcat_service
这个问题有时只是因为配置错误。
例如,请检查您是否在运行配置中定义了 SSL 端口号。如果是这样,并且如果您在 tomcat 的 server.xml 中没有正确的配置,那么将无法正确启动您的调试会话,并且很遗憾您将遇到同样的错误。我认为这可以显示为不同的错误。所以,在我看来,这也是一个想法问题。
解决方案是从 IDE 的运行配置中删除 SSL 端口号值。
#intellij-idea https://stackoverflow.com/questions/tagged/intellij-idea
有多个相同的解决方案。
如果在 intelliJ 中运行,请尝试 chmod a+x /path/to/tomcat/bin/catalina.sh