it-roy-ru.com

Tomcat не запускается (выбрасывает Java.net.BindException:)

Я выполнил следующие настройки для запуска веб-проекта на Java, но почему-то мой Tomcat не запускается из Eclipse: 

Java_HOME : C:\Program Files\Java\jdk1.6.0_03  
PATH : C:\Program Files\Java\jdk1.6.0_03\bin  
CATALINA_HOME : D:\javaworkspaces\Apache-Tomcat-7.0.27  

Затем, по мере необходимости, я устанавливаю новый сервер из Eclipse и указываю путь установки Tomcat. 

Как советовали на некоторых форумах, я добавил Tomcat-juli.jar в путь к классам.
Несмотря на все это, когда я пытаюсь запустить сервер Tomcat, я получаю сообщение об ошибке, так как Tomcat не запускается в течение 45 секунд.

Я получаю следующее сообщение в журнале: 

Jul 26, 2012 5:49:34 PM org.Apache.catalina.core.AprLifecycleListener init  
INFO: The APR based Apache Tomcat Native library which allows optimal performance in     production environments was not found on the Java.library.path: C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_03\bin;D:\Eclipse-jee-Indigo-SR2-win32\Eclipse;;.  
Jul 26, 2012 5:49:34 PM org.Apache.Tomcat.util.digester.SetPropertiesRule   
 begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property         'source' to 'org.Eclipse.jst.j2ee.server:JEE_Day01' did not find a matching property.  
Jul 26, 2012 5:49:34 PM org.Apache.coyote.AbstractProtocol init  
INFO: Initializing ProtocolHandler ["http-bio-80"]  
Jul 26, 2012 5:49:35 PM org.Apache.coyote.AbstractProtocol init  
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]  
Jul 26, 2012 5:49:35 PM org.Apache.coyote.AbstractProtocol init  
SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]  
Java.net.BindException: Address already in use: JVM_Bind <null>:8009  
at org.Apache.Tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.Java:393)
at org.Apache.Tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.Java:566)
at org.Apache.coyote.AbstractProtocol.init(AbstractProtocol.Java:417)
at org.Apache.catalina.connector.Connector.initInternal(Connector.Java:956)
at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
at org.Apache.catalina.core.StandardService.initInternal(StandardService.Java:559)
at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
at org.Apache.catalina.core.StandardServer.initInternal(StandardServer.Java:814)
at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
at org.Apache.catalina.startup.Catalina.load(Catalina.Java:624)
at org.Apache.catalina.startup.Catalina.load(Catalina.Java:649)
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.load(Bootstrap.Java:281)
at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:449)  
Caused by: Java.net.BindException: Address already in use: JVM_Bind
at Java.net.PlainSocketImpl.socketBind(Native Method)
at Java.net.PlainSocketImpl.bind(Unknown Source)
at Java.net.ServerSocket.bind(Unknown Source)
at Java.net.ServerSocket.<init>(Unknown Source)
at Java.net.ServerSocket.<init>(Unknown Source)
at org.Apache.Tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.Java:49)
at org.Apache.Tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.Java:380)
... 16 more  
Jul 26, 2012 5:49:35 PM org.Apache.catalina.core.StandardService initInternal    
    SEVERE: Failed to initialize connector [Connector[AJP/1.3-8009]]
org.Apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8009]]  
at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:106)  
    at org.Apache.catalina.core.StandardService.initInternal(StandardService.Java:559)  
at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
at org.Apache.catalina.core.StandardServer.initInternal(StandardServer.Java:814)
at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
at org.Apache.catalina.startup.Catalina.load(Catalina.Java:624)
at org.Apache.catalina.startup.Catalina.load(Catalina.Java:649)
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.load(Bootstrap.Java:281)
at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:449)  
Caused by: org.Apache.catalina.LifecycleException: Protocol handler initialization failed
at org.Apache.catalina.connector.Connector.initInternal(Connector.Java:958)
at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
... 12 more

Я ссылался на несколько форумов, но плохо застрял в этой ситуации. Пожалуйста, ведите меня.

23
user1649415

эти строки:

SEVERE: Failed to initialize end point associated with ProtocolHandler ["ajp-bio-8009"]
Java.net.BindException: Address already in use: JVM_Bind <null>:8009  

подразумевается, что на порту 800 уже работает служба. Tomcat (с ajp) уже запущен?

если требуется служба, работающая на 8009, вы можете изменить конфигурацию соединителя в server.xml на что-то вроде ниже:

<Connector port="8089" protocol="AJP/1.3" redirectPort="8443" />
23
olly_uk

Он говорит, что номер порта 8009 уже занят каким-то другим процессом, работающим в вашей ОС попробуйте найти этот процесс и остановить его или заставить ваш Tomcat работать на другом (свободном) порту

10
Jigar Joshi

убить соответствующий (прослушивающий) процесс на этом порту, т. е. 8009 . использовать 

netstat -a -o -n

искать PID процесса. Это может выглядеть примерно так TCP [::]: 8009 [::]: 0 СЛУШАТЬ 892

используйте команду taskkill, чтобы убить процесс . пример:

taskkill /F /PID 892

6
Sadique Khan

Java.net.BindException: адрес уже используется: JVM_Bind: 8009 

Это означает, что какой-то другой процесс уже использует этот порт. Может ли это быть другой экземпляр Tomcat?

5
Cratylus

Вам не нужно менять server.port, чтобы решить эту проблему ...

Mac/Unix/Linux Users: Если после перезапуска Tomcat эта проблема все еще существует, возможно, это связано с тем, что Tomcat некорректно завершил работу, и с ним по-прежнему связаны ресурсы, которые теперь заблокированы. PID этих ресурсов, выполнив эту команду: 

lsof | grep Tomcat

Завершите эти процессы, используя:

kill -15 <PID>

Это должно исправить вашу проблему.

Использование команды kill -15 для TERM (-15) предпочтительнее, чем SIGKILL (-9). Переключатель -15 посылает процессу сигнал о начале его фаз отключения и очистки ограниченных ресурсов.

2
cosbor11

Попробуйте: http: // localhost: 8089 , Если он не работает (или) Попробуйте: Set: JRE_HOME: C:\Program Files\Java\jre1.5.0_11 (зависит от вашей версии JRE) и добавьте C:\Program Files\Java\jre1.5.0_11 (зависит от вашей версии JRE)\bin к пути Eclipse-> перейдите в настройки Windows: server-> RuntimeEnvironment, удалите добавленный сервер и восстановите и добавьте новый TomcatServer

0
BloodRed

Что-то еще использует порт 8009.

Либо отключите устройство, использующее 8009, либо измените файл server.xml, чтобы использовать другой порт, кроме 8009. 

0
vishal

TIL: кто-то еще на сервере может запустить IIS на порту 80 и никому не говорить.
Если ваш Tomcat настроен для того же порта, он также сообщит об этой ошибке.
Порт в IIS или Tomcat необходимо изменить.

Чтобы изменить порт в IIS:
Административные инструменты | Менеджер информационных служб Интернета (IIS)
Щелкните правой кнопкой мыши на веб-сайте по умолчанию | Изменить привязки ... Изменить порт

-ИЛИ ЖЕ-

Чтобы изменить порт в Tomcat:
Откройте conf\server.xml и обновите значение порта в теге:

<Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    URIEncoding="UTF-8"/>

Перезапустите Tomcat

Наслаждайтесь 2 веб-сервисами.

0
BobTheShrew

Обычно это происходит, если порт подключения/отключения Tomcat уже используется. Во-первых, запустите shutdown.bat (иногда мы пропускаем, что один экземпляр Tomcat уже запущен) Далее в команде Prompt run

netstat -aon | findstr 0.0:<your port number which is giving bind exception>

Чтобы получить PID приложения, которое в данный момент использует ваш порт. Либо убейте это приложение, либо используйте какой-либо другой порт, которого нет в списке при запуске

netstat -a -o -n
0
Sagar Mhatre