13

在 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

但是当我将端口号从 更改80809000then 时没有错误,但是对http://localhost:9000/的请求给出了 404 错误The requested resource (/) is not available

我错过了什么吗?

4

4 回答 4

18

一个应用程序正在使用 8080 端口。要找出是哪一个,请在 Windows 命令提示符上使用以下命令:

C:\>netstat -aon | findstr 0.0:8080

然后取最后一列的数字(即进程ID)并找出任务管理器中的进程。如果命令没有任何结果,那么您没有应用程序使用该端口。

于 2011-02-17T13:16:36.917 回答
3
C:\>netstat -aon | findstr 0.0:8080

这已经解决了它,只需从进程中清除具有此 ID 的进程并重新启动 TomCat。

于 2012-05-28T02:37:12.453 回答
0

您需要以root用户身份在端口80启动tomcat。其他端口不需要。

于 2012-01-11T09:41:14.897 回答
0

另一个进程正在使用该端口(可能是另一个 Tomcat 实例)。

如果您不想为实际的 Tomcat 实例使用另一个端口,则需要终止该进程。

命令

  • 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>
      
于 2016-01-15T12:48:07.567 回答