Ошибка запуска Tomcat

Я получаю следующую ошибку в файле журнала Catalina при запуске Tomcat в Windows:

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.

Я что-то пропустил?

Ответы

Ответ 1

В одном приложении используется порт 8080. Чтобы узнать, какой из них, используйте следующую команду в подсказке DOS:

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

Затем возьмите номер в последнем столбце (идентификатор процесса) и узнайте, какой процесс находится в диспетчере задач. Если ничего не выходит из команды, то у вас нет приложения, использующего этот порт.

Ответ 2

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

Это устранило это, просто очистив процесс с помощью этого id от процессов и перезапустив TomCat.

Ответ 3

Вам нужно запустить tomcat на порту 80 как пользователь root.Другого порта нет.

Ответ 4

Другой процесс использует этот порт (возможно, другой экземпляр 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>