Ошибка запуска 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,

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

4 ответа

Решение

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

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

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

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

Это было исправлено, просто очистив процесс с этим идентификатором от процессов и перезапустив TomCat.

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

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