Address already in use: JVM_Bind(端口冲突)

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等等

建议出现上述情况使用第一种方法。

你可能感兴趣的:(多线程,socket)