我遇到一个问题,我无法使用IntellJ IDE在调试模式下设置我的应用程序,但运行模式没问题。
我的操作系统是Windows 7,IDE是IntellJ IDEA,Web容器是Tomcat 6.我已经尝试了很长时间,更改了HTTP端口和JMX端口,但它没有用。
当我使用IntellJ在调试模式下设置应用程序时,它失败了,事件日志是:
16:05:35运行tomcat时出错:无法打开调试器端口: java.net.BindException“已在使用的地址:JVM_Bind”。
任何帮助将不胜感激。
答案 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)
答案 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中的调试相关的端口
要检查的内容:如果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)
我通过这种方式解决了这个问题。
有关详细信息,请参阅以下链接:
删除Tomcat
添加新的Tomcat
答案 7 :(得分:3)
我有这个确切的消息。
原因是某些IDE(我使用Eclipse和Intellij)无法关闭tomcat服务器。或者可能在崩溃之前崩溃。
解决方案是导航到C:\...\apache-tomcat-xxx\bin
并运行shutdown
。
答案 8 :(得分:2)
对我来说唯一有用的是转到Windows上的任务管理器,并通过右键单击结束所有正在运行的Java进程 - &gt;结束任务。
答案 9 :(得分:1)
调试时遇到了这个问题:它与
一起使用答案 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)
答案 16 :(得分:0)
我遇到了这种情况,根据上述答案,我尝试更改端口,例如 编辑配置 -> 启动/连接 -> 调试 -> 更改端口 但它没有解决我的问题,因为我在调试模式下运行我的应用程序,所以一旦尝试在没有调试的情况下正常运行应用程序。 它解决了我的问题!
答案 17 :(得分:0)
答案 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>".
答案 19 :(得分:0)
只需重新启动Android Studio ,然后再尝试全部操作。我现在正面临着同样的情况,因此可以通过这种方式解决它。
快乐编码:)
答案 20 :(得分:0)
答案 21 :(得分:0)
我假设此异常通常在Tomcat关闭不当并仍然保留端口的情况下发生。 通常,杀死所有监听1099端口的进程就足够了。对于窗口10:
netstat -aon | find "1099"
taskkill /F /PID $processId
答案 22 :(得分:0)
就我而言,我在IntelliJ中打开了另一个项目,并且在该项目中以调试模式运行Tomcat。 停止该Tomcat实例即可解决该问题。
答案 23 :(得分:0)
答案 24 :(得分:0)
答案 25 :(得分:0)
8081
)。 lsof -t -i :8081
查找所有其他进程kill PROCESS_ID
就我而言,我浪费了很多时间来更改调试器端口,但这不是问题。由于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)
同样有多种解决方案。
答案 29 :(得分:-2)
如果你在intelliJ中运行它,请尝试chmod a + x /path/to/tomcat/bin/catalina.sh