2015-07-02 54 views
0

当试图在我的项目上执行mvn grails:run-app时,出现8080已被使用的JVM_Bind错误。我一直在运行这个项目,直到Eclipse崩溃时才运行它。我重新启动了我的机器两次,但没有清除它。 Netstat(netstat -ano)在8080上显示没有任何。我的tomcat在8088上,如果我重新配置它在8080上运行,它工作正常,因此端口是而不是正在使用中。这只是maven和/或grails有这个错误。任何想法如何我可以清除这个?JVM_Bind端口8080已被使用 - 但该端口上没有任何进程

$ 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

您是否尝试通过eclipse清理项目并重新运行?你是否尝试过直接从控制台运行它(请原谅我的无知,我不确定mvn grails是什么:run-app正好,我认为这意味着你正在通过另一个程序运行它。我的猜测是,如果你已经重新启动并且仍然有错误,那么与eclipse有关的问题会导致问题。)如果所有这些都不起作用,我还会仔细检查并杀死任何可能运行的java进程(过度杀毒仍然是死对不对?)。 –

+0

是的,做了干净的包,并且从命令行跑了,结果一样。没有java进程 - 我已经重启了两次,但是我每次都确定ps -eaf(并且我也检查了任务管理器)。这是一个头部划痕的人。我想知道JDK是否已损坏,所以我将尝试下一次重新安装。您可能有的任何其他想法我都会尝试游戏:) – JenVander

+0

如果您要编辑问题以包含您正在运行的实际netstat命令及其生成的输出,以验证您正在解释它正确。以unix的面值对你进行描述,我的下一步将会产生错误,同时强调进程以查看实际系统调用触发了什么JVM错误。在Windows上,这些看起来很有前途的排除故障:http://stackoverflow.com/questions/3847745/systrace-for-windows – Kenster

回答

0

问题不是已经使用的端口,而是一个无效的IP地址。我重新连接到了我的VPN,并且DHCP给了我一个新的IP地址。我在grails应用程序中绑定的是旧IP地址。更改为新的有效IP地址解决了问题。为了验证这一点,我修改了grails IP绑定到一个已知的无效IP地址,它重现了这个问题。这是一个错误或误导性错误信息的情况。通常这个错误是由挂在端口上的进程造成的,但在我的情况下,正如我的netstat输出显示的那样,这不是问题。所以如果其他人有这个问题,检查端口检查你的IP地址。

0

A绑定错误是由于进程仍然使用相应的端口进行注册而引起的。这还包括僵尸进程,这些僵尸进程还没有死亡并且已经丢失。

重新启动会清除掉这个,但正如我对重启解决方案一样,你可以使用netstat(在windows上使用相同的命令,命令可以找到僵尸进程)。

你需要的是netstat命令,你就需要看每个操作系统上的文件(尝试netstat -?),但通常你要寻找的是类似netstat -a,它会列出所有正在使用的端口。

我们最感兴趣的是那些处于LISTENING状态的人,这意味着某些东西已经绑定了该端口进行聆听,其中包括您的端口8080

同样,您需要查看命令选项,因为每个操作系统都有不同的选项,可以显示PID(进程ID)。然后,您可以使用您的'任务管理器'/'活动监视器'/'顶部'应用程序来匹配PID与正在运行的应用程序,并杀死该应用程序。

在Mac中,您还需要使用以下命令获取PID。

lsof -i -U -P | grep "LISTEN"

一旦你杀了这个过程中,你的端口,然后将可用,然后你可以不JVM_Bind问题,运行程序。

P.S.一个人也想到了; Java不会绑定1200以下的端口,除非您以管理员/ root用户身份运行。但你的8080应该没问题。

+0

尽管这是一个很好的标准回答,而且更常见的根本原因,但在这种情况下,它不是根本原因。没有任何进程绑定到端口 - 它似乎是一个错误的IP地址,并附有误导性的错误消息。 – JenVander