我在Windows上启动Tomcat时在Catalina日志文件中收到以下错误:
Sep 3, 2010 3:22:53 PM org.apache.catalina.startup.Catalina start
SEVERE: Catalina.start:
LifecycleException: service.getName(): "Catalina"; Protocol handler start failed: java.lang.Exception: Socket bind failed: [730048] Only one usage of each socket address (protocol/network address/port) is normally permitted.
at org.apache.catalina.connector.Connector.start(Connector.java:1138)
at org.apache.catalina.core.StandardService.start(StandardService.java:531)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Sep 3, 2010 3:22:53 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 67604 ms
但是,当我将端口号从8080
更改为9000
时,没有错误,但是http://localhost:9000/的请求给出了404错误The requested resource (/) is not available
。
我错过了什么吗?
答案 0 :(得分:18)
一个应用程序正在使用8080端口。要找出哪一个,请在Windows命令提示符上使用以下命令:
C:\>netstat -aon | findstr 0.0:8080
然后取最后一列中的数字(即进程ID)并找出任务管理器中的进程。如果命令没有任何结果,那么您没有使用该端口的应用程序。
答案 1 :(得分:3)
C:\>netstat -aon | findstr 0.0:8080
这已经修复了它,只需从进程中清除带有此id的进程并重新启动TomCat。
答案 2 :(得分:0)
您需要以root用户身份在端口80启动tomcat。其他端口不需要。
答案 3 :(得分:0)
另一个进程正在使用该端口(可能是另一个Tomcat实例)。
如果您不想为实际的Tomcat实例使用其他端口,则需要终止该进程。
for /f "tokens=5" %a in ('netstat -ao ^| findstr 0.0.8080') do taskkill /pid %a
或
获取PID
netstat -ao | findstr 0.0:8080
你得到这样的东西:
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 5180
(最后一个值是PID - 在以下命令中使用它)
杀死进程
taskkill /pid <pid>