Tomcat启动错误

时间:2010-09-03 10:06:45

标签: tomcat lifecycleexception

我在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

我错过了什么吗?

4 个答案:

答案 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实例使用其他端口,则需要终止该进程。

CMD

  • 1行

    for /f "tokens=5" %a in ('netstat -ao ^| findstr 0.0.8080') do taskkill /pid %a
    

  • 2行

    • 获取PID

      netstat -ao | findstr 0.0:8080
      
      你得到这样的东西:

      TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       5180
      

      (最后一个值是PID - 在以下命令中使用它)

    • 杀死进程

      taskkill /pid <pid>