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等等
建議出現上述情況使用第一種方法。