java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at mypackage.WebServer.startServer(WebServer.java:13)
at mypackage.WebServer.main(WebServer.java:33)
這是我學JavaWeb遇到的第一個錯誤,解決花了一些時間。看到錯誤不要害怕,因為解決錯誤的同時,正是我們經驗值增長也在增長的哦
這個是我在使用Socket和多線程實現一個JavaWeb伺服器時遇到的
Address already in use 這句話是地址已經使用
這個是遇到這個問題的可能情況
I.就是當前連接埠已經有別的程式在佔用著,所以要麼把佔用這個連接埠的程式關閉,要麼重新換一個連接埠
II.連接埠號碼被佔用,如果你有裝oracle的話,有可能是oracle使用了8080連接埠,oracle安裝後並且如果啟動了OracleHttp服務會佔用8080連接埠
III.我認為很可能是多啟動了幾次TOMCAT,在ECLIPSE下重複啟動TOMCAT就會出現這個問題,你去調查一下看看是否是這個原因.
IV.如果不是windows作業系統,那麼80連接埠已經被佔用.如果是windows作業系統.請檢查是否裝有IIS.
尋找問題原因:我的機子還沒有裝Oracle,並且使用的是Windows作業系統,裝了IIS了,使用的是80連接埠,但我這個程式是用的8080連接埠,排除了II、IV。I說的籠統了點,我的問題是III多啟動了幾次TOMCAT,在ECLIPSE下重複啟動TOMCAT就會出現這個問題
解決方案:
1.把myeclipse關掉背景javax.exe進程殺掉。然後重新啟動myeclipse就可以了
2. 把tomcat\conf檔案夾裡面的server.xml的連接埠換成其它未佔用的80連接埠 如:8088、8089等等
建議出現上述情況使用第一種方法。