今天又出现了Address already in use: JVM_Bind:8080这个问题,我真的很无语,去查看了一下进程觉得没有被占用啊,于是,直接去修改tomcat的配置文件,修改了以后再启还是Address already in use: JVM_Bind这个错误,我想肯定是改了端口就能轻易解决的问题,于是,用命令去查个究竟看看到底是谁在占用我服务器的端口。
- netstat -anob|findstr "8080"
这个命令能清楚列出,占用8080端口的进程的详细信息,如下图
看到了吗?第一行那个0.0.0.0,第一次看到的时候,停顿了一下,这是什么地址,谷歌完后有了下面的解释
- 0.0.0.0为默认路由,即要到达不再路由表里面的网段的包都走0.0.0.0这条规则
说的再通俗点儿就是:0.0.0.0为windows对所有未知ip的地址描述包括网卡dhcp的取得的地址pppoe的ip及其它非本机指定ip.0.0.0.0是全零网络,代表默认网络,帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。
不管它什么地址,占用我的端口就是你不对,来让它放开我的8080
- tasklist|findstr "4516"
看看是谁
竟然是Oracle的监听服务,我无语了,唉,先放开吧,直接去进程里面找到关掉它,也可以用下面的命令
- taskkill /im TNSLSNR.EXE
要是遇到有重名的用下面的命令
- taskkill /PID 4516
好了,世界安静了,再去启动我的三角猫,嗯~~~,一切OK了。
但是在mac上使用的是:
1.查看端口号被某个程序占用的情况,终端输入:lsof -i tcp:port 将port换成被占用的端口(如:8080)
2。之后会得到该程序的PID,可以用kill pid来杀掉进程