web-dev-qa-db-fra.com

Tomcat ne démarre pas (en Java Java.BindException lançant :)

J'ai effectué les réglages suivants pour exécuter un projet Web Java, mais mon Tomcat ne démarre pas à partir d'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  

Ensuite, comme requis, j'ai configuré un nouveau serveur à partir d'Eclipse et indiqué le chemin d'installation de Tomcat. 

Comme indiqué dans certains forums, j'ai ajouté Tomcat-juli.jar au chemin d'accès à la classe.
Malgré tout cela, lorsque j'essaie de démarrer le serveur Tomcat, je reçois le message d'erreur car Tomcat ne regarde pas en 45 secondes.

Je reçois le message de journal suivant: 

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

J'ai référé à plusieurs forums mais je suis mal pris avec la situation. Guidez-moi s'il-vous-plaît.

23
user1649415

ces lignes:

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

implique qu'un service est déjà en cours d'exécution sur le port 8009. un serveur Tomcat (avec ajp) est-il déjà en cours d'exécution?

si le service sur 8009 est nécessaire, vous pouvez modifier la configuration du connecteur dans server.xml comme suit:

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

Il indique que le numéro de port 8009 est déjà occupé par un autre processus en cours d'exécution sur votre système d'exploitation essayez de rechercher ce processus et de l'arrêter ou de faire en sorte que votre Tomcat s'exécute sur un autre port (libre)

10
Jigar Joshi

tuer le processus (d’écoute) correspondant sur ce port, c’est-à-dire 8009 . 

netstat -a -o -n

rechercher le PID du processus. Cela peut ressembler à quelque chose comme ceci TCP [::]: 8009 [::]: 0 LISTENING 892

utilisez la commande taskkill pour tuer le processus . exemple:

taskkill /F /PID 892

6
Sadique Khan

Java.net.BindException: adresse déjà utilisée: JVM_Bind: 8009 

Cela signifie qu'un autre processus utilise déjà ce port. Pourrait-il s'agir d'une autre instance de Tomcat?

5
Cratylus

Vous ne devriez pas avoir à changer le server.port pour résoudre ce problème ...

Mac/Unix/Linux Utilisateurs: Si, après avoir redémarré Tomcat et que ce problème existe toujours, c'est probablement parce que Tomcat a été arrêté de manière incorrecte et que des ressources lui sont encore associées qui sont maintenant verrouillées. les PID de ces ressources en exécutant cette commande: 

lsof | grep Tomcat

Terminez ces processus en utilisant:

kill -15 <PID>

Cela devrait résoudre votre problème.

Si vous utilisez la commande kill -15 pour TERM (-15), le processus plutôt que SIGKILL (-9) est préférable. Le commutateur -15 envoie au processus le signal pour qu'il commence ses phases d'arrêt et nettoie les ressources limitées.

2
cosbor11

Essayez: http: // localhost: 8089 Si cela ne fonctionne pas (ou) Essayez ceci: Définir: JRE_HOME: C:\Program Files\Java\jre1.5.0_11 (dépend de votre version de JRE) et ajoutez le répertoire C:\Program Files\Java\jre1.5.0_11 (selon votre version de JRE)\bin au chemin Eclipse-> allez dans les préférences de Windows: serveur-> RuntimeEnvironment supprimez Server et Referesh ajoutés, puis TomcatServer

0
BloodRed

Quelque chose d'autre utilise le port 8009.

Soit vous arrêtez ce qui utilise 8009, soit vous changez le fichier server.xml pour utiliser un autre port que 8009 

0
vishal

TIL: Quelqu'un d’autre sur un serveur peut démarrer IIS sur le port 80 et ne rien dire à personne.
Si votre Tomcat est configuré pour le même port, il signalera également cette erreur.
Le port sur IIS ou Tomcat devra être modifié.

Pour modifier le port dans IIS:
Outils d'administration | Gestionnaire des services Internet (IIS)
Clic droit sur le site Web par défaut | Modifier les liaisons ... Changer de port

-OU-

Pour modifier le port dans Tomcat:
Ouvrez conf\server.xml et mettez à jour la valeur du port dans la balise:

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

Redémarrer Tomcat

Profitez de 2 services Web.

0
BobTheShrew

Cela se produit généralement si le port Connector/shutdown du Tomcat est déjà utilisé. Tout d’abord, lancez le fichier shutdown.bat (Parfois, il nous manque une instance de Tomcat en cours de fonctionnement).

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

Pour obtenir le PID de l'application qui utilise actuellement votre port. Supprimez cette application ou utilisez un autre port non répertorié lors de l’exécution.

netstat -a -o -n
0
Sagar Mhatre