最近同事的项目在eclipse中启动老有问题,console中显示项目在tomcat中已经启动成功了,但是eclipse右下角还显示tomcat在starting.....starting你妹啊。。。最后结果就是启动超时。网上有很多说法,什么加长超时时间,加大JVM,清理项目,换tomcat,重新下载项目,换工程目录。。。通通没用。。。邪了门了。。。难道是灵异事件+人品败坏么。。。不能够吧。。。
项目直接放在外面的tomcat中能够正常启动,并使用。
最后,终于感谢天感谢地,解决了,在stackoverflow上,一位哥们儿的一句话,点醒了我们,
链接:http://stackoverflow.com/questions/12799265/tomcat-is-not-starting-up-in-eclipse
原话:I was able to figure it out. Currently I am not able to remember on application (software) running behind. (install by network admin) for IP/Port related configuration.
我们的情况:我们这位同事打开了一个代理proxifier,导致端口占用了,关了该软件就可以用了。
或者是先启动eclipse里的tomcat,再打开proxifier也可以。
一、异常描述
1. 在eclipse中启动tomcat,应用已经启动成功,但是tomcat仍然一直处于starting装填
二、分析原因
1. 更换8080端口为9080,启动tomcat,可以完整启动。证明是8080端口问题;
2. 但是8080端口并没有被占用;
3. 在网上搜索可能原因,可能原因是打开了代理,导致端口被占用;
http://www.cnblogs.com/winkey4986/p/3303412.html
http://zhangzhaoaaa.iteye.com/blog/2113072
4. 根据网上原因的分析感召,分析我本机的可能原因。
(1)我使用NATAPP做域名到本机的映射,即把一个二级域名映射到本机,方便做调试;
(2)域名默认映射到本机的80端口,我用的是mac osx。
Mac OS X 因为要绑定80端口需要ROOT权限, 但是如果用root权限启动eclipse或tomcat又会造成, 启动创建的各类文件是root的,普通用户无法删除。
(3)由于需要root权限,较为麻烦,所以我设置了80端口请求转发到8080端口。
sudo vim /etc/pf.conf
rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
sudo pfctl -d
sudo pfctl -f /etc/pf.conf
sudo pfctl -e
4. 使用tomcat启动8080端口时,则会出现异常一
5. 原因结论,端口被占用
eclipse 53997 yeahwell 215u IPv6 0x2058db610a8d8d5f 0t0 TCP localhost:56644->localhost:9080 (SYN_SENT)