報錯內容:
嚴重: StandardServer.await: create[localhost:8005]: java.net.BindException: Cannot assign requested address: JVM_Bind at java.net.DualStackPlainSocketImpl.bind0(Native Method) at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106) at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190) at java.net.ServerSocket.bind(ServerSocket.java:376) at java.net.ServerSocket.<init>(ServerSocket.java:237) at org.apache.catalina.core.StandardServer.await(StandardServer.java:427) at org.apache.catalina.startup.Catalina.await(Catalina.java:777) at org.apache.catalina.startup.Catalina.start(Catalina.java:723) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
看到這個JVM_Bind,我立馬想到是tomcat可能重復開了,然后去tomcat的bin目錄關了tomcat,並且myeclipse也重新關閉了tomcat,不過問題還是沒解決。
於是在網上搜索關鍵字Cannot assign requested address,查看很多都是因為端口被占用導致,但也有不是的,其中有一篇是說出現Cannot assign requested address的原因是localhost被路由到了別的機器。
改了端口但是會出現這個問題,所以我懷疑是localhost被路由到了別的機器這個原因。
想到這里,我十分確定是這個問題了。我在cmd命令窗口,輸入ping localhost,發現確實被路由到了別的機器(一個10.x.x.xxx的IP),
打開/etc/hosts
原來是我以前添加了一個配置,之前一直都沒問題的,想起中午公司把我的網線接到另一個路由器那邊了,所以IP地址也變了,所以導致這個問題,
接下來解決問題就很簡單了,我把 10.x.x.xxx的IP那一行地址刪掉,然后問題就解決了,重新啟動tomcat正常。