当我尝试在我的项目上运行mvn grails:run-app时,我得到了8080已经在使用的JVM_Bind错误。我一直在运行这个项目没有任何问题,直到Eclipse崩溃运行它。我重新启动了我的机器两次,但是它没有清除它。 Netstat(netstat -ano)在8080上显示 nothing 。我的tomcat在8088上,如果我重新配置它在8080上运行,它运行正常,所以端口不正在使用。只有maven和/或grails才会出现此错误。我有什么想法可以解决这个问题吗?
$ netstat -ano
Active Connections
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 752
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:623 0.0.0.0:0 LISTENING 7056
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING 832
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING 960
TCP 0.0.0.0:1027 0.0.0.0:0 LISTENING 904
TCP 0.0.0.0:1028 0.0.0.0:0 LISTENING 1128
TCP 0.0.0.0:1033 0.0.0.0:0 LISTENING 888
TCP 0.0.0.0:1034 0.0.0.0:0 LISTENING 5548
TCP 0.0.0.0:2701 0.0.0.0:0 LISTENING 4788
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 1688
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 1452
TCP 0.0.0.0:4369 0.0.0.0:0 LISTENING 3644
TCP 0.0.0.0:5357 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:5432 0.0.0.0:0 LISTENING 3604
TCP 0.0.0.0:5672 0.0.0.0:0 LISTENING 3544
TCP 0.0.0.0:8081 0.0.0.0:0 LISTENING 2928
TCP 0.0.0.0:15672 0.0.0.0:0 LISTENING 3544
TCP 0.0.0.0:16992 0.0.0.0:0 LISTENING 7056
TCP 0.0.0.0:25672 0.0.0.0:0 LISTENING 3544
TCP 10.0.0.252:139 0.0.0.0:0 LISTENING 4
TCP 10.0.0.252:1060 74.125.22.188:5228 ESTABLISHED 7144
TCP 10.0.0.252:1062 168.159.224.143:443 ESTABLISHED 6316
TCP 10.0.0.252:55861 208.43.253.206:443 ESTABLISHED 7136
TCP 10.0.0.252:57299 141.101.112.192:443 CLOSE_WAIT 8160
TCP 10.0.0.252:57300 141.101.112.192:443 CLOSE_WAIT 8160
TCP 10.0.0.252:57301 141.101.112.192:443 CLOSE_WAIT 8160
TCP 10.0.0.252:57385 23.196.34.134:443 ESTABLISHED 7144
TCP 10.0.0.252:57430 208.43.253.206:443 CLOSE_WAIT 7136
TCP 10.0.0.252:57435 173.194.121.0:80 ESTABLISHED 7144
TCP 10.0.0.252:57442 173.194.121.14:443 ESTABLISHED 7144
TCP 10.0.0.252:57447 64.86.202.11:80 ESTABLISHED 7144
TCP 10.0.0.252:57456 168.159.218.174:443 ESTABLISHED 6316
TCP 10.0.0.252:57462 190.93.244.58:80 ESTABLISHED 7144
TCP 10.0.0.252:57463 74.125.228.217:80 TIME_WAIT 0
TCP 10.0.0.252:57470 23.196.2.197:80 ESTABLISHED 7144
TCP 127.0.0.1:1029 0.0.0.0:0 LISTENING 2028
TCP 127.0.0.1:1030 127.0.0.1:4369 ESTABLISHED 3544
TCP 127.0.0.1:1035 127.0.0.1:62522 ESTABLISHED 7416
TCP 127.0.0.1:1036 0.0.0.0:0 LISTENING 7136
TCP 127.0.0.1:1164 0.0.0.0:0 LISTENING 996
TCP 127.0.0.1:1165 0.0.0.0:0 LISTENING 7056
TCP 127.0.0.1:2559 0.0.0.0:0 LISTENING 7060
TCP 127.0.0.1:4369 127.0.0.1:1030 ESTABLISHED 3644
TCP 127.0.0.1:55018 0.0.0.0:0 LISTENING 3112
TCP 127.0.0.1:62522 0.0.0.0:0 LISTENING 1348
TCP 127.0.0.1:62522 127.0.0.1:1035 ESTABLISHED 1348
TCP [::]:80 [::]:0 LISTENING 4
TCP [::]:135 [::]:0 LISTENING 752
TCP [::]:445 [::]:0 LISTENING 4
TCP [::]:623 [::]:0 LISTENING 7056
TCP [::]:1025 [::]:0 LISTENING 832
TCP [::]:1026 [::]:0 LISTENING 960
TCP [::]:1027 [::]:0 LISTENING 904
TCP [::]:1028 [::]:0 LISTENING 1128
TCP [::]:1033 [::]:0 LISTENING 888
TCP [::]:1034 [::]:0 LISTENING 5548
TCP [::]:2701 [::]:0 LISTENING 4788
TCP [::]:3306 [::]:0 LISTENING 1688
TCP [::]:3389 [::]:0 LISTENING 1452
TCP [::]:5357 [::]:0 LISTENING 4
TCP [::]:5432 [::]:0 LISTENING 3604
TCP [::]:5672 [::]:0 LISTENING 3544
TCP [::]:8081 [::]:0 LISTENING 2928
TCP [::]:16992 [::]:0 LISTENING 7056
TCP [::1]:1166 [::1]:1168 ESTABLISHED 7056
TCP [::1]:1168 [::1]:1166 ESTABLISHED 7056
UDP 0.0.0.0:123 *:* 1092
UDP 0.0.0.0:500 *:* 1128
UDP 0.0.0.0:3702 *:* 1092
UDP 0.0.0.0:3702 *:* 4152
UDP 0.0.0.0:3702 *:* 1092
UDP 0.0.0.0:3702 *:* 4152
UDP 0.0.0.0:4500 *:* 1128
UDP 0.0.0.0:5355 *:* 1452
UDP 0.0.0.0:8082 *:* 2928
UDP 0.0.0.0:54654 *:* 4152
UDP 0.0.0.0:54960 *:* 7144
UDP 0.0.0.0:59195 *:* 1092
UDP 0.0.0.0:63291 *:* 1092
UDP 10.0.0.252:137 *:* 4
UDP 10.0.0.252:138 *:* 4
UDP 127.0.0.1:48000 *:* 7060
UDP 127.0.0.1:49153 *:* 3604
UDP 127.0.0.1:61532 *:* 6316
UDP [::]:123 *:* 1092
UDP [::]:500 *:* 1128
UDP [::]:3702 *:* 4152
UDP [::]:3702 *:* 4152
UDP [::]:3702 *:* 1092
UDP [::]:3702 *:* 1092
UDP [::]:4500 *:* 1128
UDP [::]:8082 *:* 2928
UDP [::]:54655 *:* 4152
UDP [::]:59196 *:* 1092
UDP [::]:63292 *:* 1092
答案 0 :(得分:1)
导致绑定错误,因为仍使用相应端口注册进程。这还包括僵尸进程,它们没有死亡并且已经丢失了。
重新启动会将其清理干净,但是当我与重启解决方案相关时,您可以使用netstat
(在windows,linux和amp; mac上的相同命令)命令找出僵尸进程。
您需要的是netstat
命令,您需要查看每个操作系统上的文档(尝试netstat -?
),但通常您要查找的内容类似于{{1这将列出正在使用的所有端口。
我们最感兴趣的是处于netstat -a
状态的那些,这意味着某些东西绑定了该端口以供收听,其中包括您的LISTENING
端口。
同样,您需要查看命令选项,因为每个操作系统都有不同的选项,可以显示PID(进程ID)。然后,您可以使用“任务管理器”/“活动监视器”/“顶部”应用程序将PID与正在运行的应用程序进行匹配,并终止该应用程序。
在Mac中,您还需要使用以下命令来获取PID。
8080
一旦您杀死了该进程,您的端口就可以使用,然后您可以在没有JVM_Bind问题的情况下运行您的程序。
P.S。人们也要注意;除非您以管理员/ root用户身份运行,否则Java不会绑定1200之类的端口。但你的8080应该没问题。
答案 1 :(得分:0)
问题不在于正在使用的已绑定端口,它是无效的IP地址。我重新连接到我的VPN,DHCP给了我一个新的IP地址。我在grails应用程序中的绑定是旧的IP地址。更改为新的有效IP地址可解决问题。为了验证这一点,我将grails IP绑定修改为已知的无效IP地址,并重现了该问题。这是一个错误或误导性错误消息的情况。通常这个错误是由挂在端口上的进程引起的,但在我的情况下,正如我的netstat输出所示,这不是问题。因此,如果其他人遇到此问题,请检查端口和检查您的IP地址。