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等等
建议出现上述情况使用第一种方法。