Address already in use: bind端口被占用的多种原因以及解决方案

公司项目用的是dubbo+springMVC+spring+mybatis

项目从git上拉取下来  启动项目:


日志中报错======>Address already in use : bind

这个错误再熟悉不过了  作为java开发人员应该都遇到过

一般的解决思路 :

1 打开cmd黑窗口 

2 输入命令:   netstat-ano  查找冲突的端口号对应的pid 

3 然后去任务管理器中关闭对应端口的服务即可


例如上图中的圆圈中的8081是你项目的端口号  对应的pid是3380  

那么你去任务管理器中找到对应pid的服务  状态栏右键选择关闭服务  然后重启elipse中的项目  就可以正常运行了  



可是我的项目端口号冲突后 :

我去cmd窗口中查找对应的端口号  发现并没有冲突

这就奇怪了  

好吧  就当我眼花了  于是我把tomcat端口换了8082 8083 .....都tm换到8090了一次次重启还是不成功  查找端口号都没有冲突   已疯..... 砸电脑中....半天过去了...........决定吃完午饭  下午慢慢看日志

那么多日志一条条看   

果然发现了一个奇怪的问题:


项目启动   竟然初始化了两次 

这.........

于是乎百度  找到了答案  

这是因为tomcat的配置中有一个属性appBase="webapps"

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="D:\apache-tomcat-7.0.65\webapps\xxx" path="" reloadable="true" source="org.eclipse.jst.jee.server:xxx"/></Host>

什么意思呢: Host标签中配置了appBase属性,tomcat启动就会去加载webapps目录下的所有项目, 下面又配置了标签context,docBase属性, tomcat又会去加载docBase这个路径下的项目, 等于项目又被加载了一次 , 导致端口被占用 加载第一次用了这个端口  加载第二次又用了这个端口; 

解决方案: 把server.xml中的appBase属性置为空  进入tomcat的webapps目录下删除已经缓存的项目  重新启动即可解决


第一次写博客  不足之处   多多指教.

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值