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