2015-07-02 53 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