Plusieurs ports (8005, 8080, 8009) requis par Tomcat Server chez localhost sont déjà utilisés

258

J'obtiens l'erreur suivante lorsque j'essaie d'exécuter un programme JSP simple sur Tomcat dans Eclipse.

Plusieurs ports (8005, 8080, 8009) requis par Tomcat v6.0 Server sur localhost sont déjà utilisés. Le serveur s'exécute peut-être déjà dans un autre processus ou un processus système utilise peut-être le port. Pour démarrer ce serveur, vous devrez arrêter l'autre processus ou modifier le ou les numéros de port.

Comment cela est-il causé et comment puis-je le résoudre?

elle
la source
J'ai eu un problème similaire qui s'est avéré être le pare-feu Windows.
James Oravec
Un processus mort-vivant maintient probablement votre matou en vie. tuer le processus soit en trouvant son ID et en le terminant, soit en redémarrant votre machine.
Felipe Leão
vous pouvez utiliser ces commandes pour arrêter les services tomcat déjà en cours d'exécution à partir de la console de commande. netstat -ano | findStr 8080pour trouver les services en cours d'exécution, puis trouver l'ID de processus et copier le pid et réexécuter la commande en tant quetaskkill /F /PID pid_number
Mdhar9e

Réponses:

473

Vous avez déjà une autre instance de Tomcat en cours d'exécution. Vous pouvez le confirmer en allant http://localhost:8080dans votre navigateur Web et vérifier si vous obtenez la page d'accueil par défaut de Tomcat ou une page d'erreur 404 spécifique à Tomcat. Les deux sont des preuves tout aussi valables que Tomcat fonctionne bien; si ce n'était pas le cas, vous auriez reçu un message d'erreur d'expiration de la connexion HTTP spécifique au navigateur.

Vous devez l'arrêter. Accédez au /binsous-dossier du dossier d'installation de Tomcat et exécutez le script shutdown.bat(Windows) ou shutdown.sh(Unix). En vain, fermez Eclipse puis ouvrez le gestionnaire de tâches et tuez tous les processus javaet / ou javaw.

Ou si vous l'avez réellement installé en tant que service Windows pour une raison quelconque (ceci est destiné à la production et n'est pas utile lorsque vous développez), ouvrez le gestionnaire de services ( Démarrer> Exécuter> services.msc ) et arrêtez le service Tomcat. Si nécessaire, désinstallez complètement le service Windows. Pour le développement, seul le fichier ZIP est suffisant.

Ou si votre intention réelle est d'exécuter deux instances de Tomcat simultanément, vous devez configurer la deuxième instance pour écouter sur différents ports. Consultez la documentation Tomcat pour plus de détails.

BalusC
la source
1
parfait, cela me tourmente depuis toujours. Je l'ai exécuté comme sh shutdown.shdans le terminal dans le répertoire / bin.
Danny Englander
2
Bonjour BalusC, je t'aime! Il n'y shutdown.baten a pas dans mon dossier bin. Tomcat a été installé en tant que service et non en tant que zip. L'arrêt du service tomcat dans les services a résolu le problème. Merci. Chenqui.
Erran Morad
1
@Borat: Je vous en prie. Gardez à l'esprit que vous feriez mieux de désinstaller le service et d'obtenir le zip à la place.
BalusC
6
"tuer tous les processus java et / ou javaw" a fonctionné pour moi, merci.
Thariq Nugrohotomo
3
L'ouverture de system monitorou task manageret la suppression d'un processus java qui utilise about 400 MBou plus RAMrésoudra également le problème. Il réserve sans le savoir le processus.
viper
55
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • pas besoin de redémarrer Eclipse
  • si vous obtenez l'erreur ci-dessus, entrez simplement cette ligne dans le terminal
  • redémarrez le tomcat dans Eclipse.
  • fonctionne uniquement dans un système basé sur Linux (Ubuntu ..etc)
Shan
la source
6
C'est mieuxkill $(ps -aef | grep java | grep apache | awk '{print $2}')
firesofmay
Cela ne fonctionne pas pour moi (Mint 17.1). Cela me donne juste l'aide pour la killcommande.
Deleet
Cela a fonctionné pour moi. Cependant, je voulais savoir si j'avais 2 instances en cours d'exécution et que je devais forcer l'arrêt d'une en utilisant cette méthode, comment savoir laquelle fermer. Merci
Gautam
29

Si vous utilisez Windows, essayez ceci dans l'invite de ligne de commande:

netstat -ano

Cela montrera tous les ports utilisés et l'ID de processus PID # du processus qui utilise ce port. Puis Ctrl+ Alt+ Delet ouvrez le Gestionnaire des tâches pour voir de quel processus il s'agit.

Vous pouvez alors choisir de le fermer / l'arrêter ou de configurer votre serveur pour utiliser un autre port. Pour vérifier si le nouveau port choisi (disons 8010) est disponible, procédez comme suit:

netstat -ano | grep 8010

Si elle ne renvoie aucune ligne, alors tout va bien.

Pour modifier le port, accédez à la vue Serveur, ouvrez server.xml et modifiez-y le port. Le mien a cette entrée:

Connector port="8010" protocol="AJP/1.3" redirectPort="8443"
Mau
la source
Veuillez consulter ma nouvelle réponse dans laquelle j'inclus un script PowerShell pour automatiser cela sans vous obliger à ouvrir le Gestionnaire des tâches.
Xharlie
1
findstrpour ceux sans grep.
eckes
25

Si vous êtes sur un environnement mac, voici ce que j'ai fait.

Recherchez l'ID de processus exécuté sur ce port à partir du terminal, par exemple 8080:

lsof -i :8080

et tuez-le:

kill -9 <PID>  

Exemple:

Vous pouvez voir le résultat suivant:

MacSys:bin krunal.$ lsof -i :8080

COMMAND   PID     USER   FD   TYPE     DEVICE  SIZE/OFF   NODE  NAME
java     21347   krunal  52u  IPv6      XXX      0t0      TCP  *:http-xxx (LISTEN)

et tuez-le: ( kill -9 21347)

Intemporel
la source
20

Étapes pour libérer le port qui est déjà utilisé pour exécuter le serveur Tomcat dans Eclipse

Par exemple, supposons que le port 8080 soit utilisé, nous devons libérer 8080 pour exécuter tomcat

Étape 1:

C: \ Users \ username> netstat -o -n -a | findstr 0.0: 8080

TCP 0.0.0.0:3000 0.0.0.0:0 ECOUTE 3116

Maintenant, nous pouvons voir que le port d'écoute est 3116 pour 8080,

Nous devons tuer 3116 maintenant

Étape 2:-

C: \ Users \ username> taskkill / F / PID 3116

Étape 3: Accédez à Eclipse et démarrez le serveur, il s'exécutera

Sachindra N. Pandey
la source
14

Si vous utilisez Eclipse, double-cliquez sur les serveurs et double-cliquez sur le serveur tomcat, puis un fichier s'ouvrira. Dans ce fichier, changez le port HTTP en un autre numéro de port et enregistrez ( Ctrl+ S) puis redémarrez le serveur.

abc
la source
Cela a fonctionné pour moi tandis que les autres solutions n'ont pas fonctionné. J'utilise Mint 17.1. J'ai dû installer tomcat via Eclipse et via apt-get car je ne pouvais pas trouver le dossier où apt-get l'avait installé. C'est probablement pourquoi j'en ai deux. Je ne pouvais toujours pas fermer le premier avec les commandes kill.
Deleet
12

Si Eclipse dit

Plusieurs ports (8005, 8080, 8009) requis par Tomcat v6.0 Server sur localhost sont déjà utilisés

Cette erreur vient du fait que tomcat peut être exécuté en arrière-plan, donc arrêtez d'abord ce serveur ... suivez les détails ci-dessous.

La solution est:

  1. Ouvrez la vue "console" (fenêtre-> afficher la vue-> Console)
  2. Arrêtez ensuite le serveur tomcat.
  3. Ouvrez ensuite la vue "serveur" et démarrez le serveur sur lequel il fonctionnera.

Merci!

Ashu Phaugat
la source
Cela a fonctionné pour moi. J'ai seulement essayé: sudo service tomcat stop
Emiliano Sangoi
10

Je n'ai aucune autre instance de Tomcat en cours d'exécution et aucun autre processus utilisant le "port Tomcat" (dans mon cas, le port 8088). Eclipse envoie le même message au démarrage de Tomcat:

.... Le serveur est peut-être déjà en cours d'exécution dans un autre processus, ou un processus système utilise peut-être le port. Pour démarrer ce serveur, vous devrez arrêter l'autre processus ou modifier le ou les numéros de port.

Je résous le problème de cette façon:

  • aller au bac de tomcat par invite
  • lancer startup.bat
  • lancez shutdown.bat
  • start tomcat par Eclipse
giocorito
la source
1
Mon problème était que les ports 8005 et 8009 étaient occupés, mais le port 8080 était libre et aucune installation de tomcat n'était en cours d'exécution à ce moment-là. Votre solution m'a aidé à résoudre ce problème, merci.
Benas
7

Ce que j'ai fait après avoir lu toutes les réponses suggérées et, comme je le sais, mon port était déjà utilisé. J'ai double-cliqué sur Tomcat sous l'onglet Serveurs dans eclipse et il a ouvert les informations de vue d'ensemble, puis j'ai trouvé les informations de port. Je viens de changer le port en conflit car le mien était le port 8009 (erreur mentionnée lors du démarrage du serveur). Je l'ai changé en 8008 et cela fonctionne très bien. Essayez si le port modifié n'est pas utilisé, le serveur démarre.

DeVilCry2ME
la source
6

Étape 1: netstat -a -o -n et il affichera une liste de réseaux, recherchez l'adresse locale comme 127.0.0.1:8080 et notez le PID (eq 3624)

C:\>netstat -a -o -n

Étape 2 : taskkill / F / PID 3624 . Exécutez cette commande pour tuer ce processus.

C:\>taskkill /F /PID 3624

lien pour poster

Sandeep Bhardwaj
la source
Veuillez consulter ma nouvelle réponse dans laquelle j'inclus un script PowerShell pour automatiser ces deux lignes.
Xharlie
5

Sous Windows, utilisez la commande pour arrêter l'instance tomcat déjà en cours d'exécution et essayez de la réexécuter dans eclipse, cela peut fonctionner.

net stop tomcat7 

Ou vous pouvez modifier le port dans le XML du serveur si vous souhaitez simplement exécuter sur d'autres ports.

Gauranga
la source
4

Un moyen simple de résoudre votre problème:

Le serveur s'exécute peut-être déjà dans un autre processus ou un processus système utilise peut-être le port. Afin de tuer ce port, procédez comme suit:

1) Téléchargez TCPView (seulement 285 Ko) à partir du lien suivant.

http://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

2) Extraire le dossier et démarrer l' application TCPView .

3) Cliquez avec le bouton droit sur java.exe (car les ports 8009,8005 sont couramment utilisés par le processus java) et sélectionnez l' option Terminer le processus .

cela arrêterait facilement un autre processus ..

REMARQUE : l'exécution de TOMCATPATH ​​/ bin / shutdown.bat peut ne pas arrêter Tomcat lorsqu'il contient des threads démon ou non gérés. Dans de tels cas, TCPView fonctionne correctement sans aucun problème.

shivadarshan
la source
2

Si vous êtes en perspective Java EE dans Eclipse et que vous essayez de démarrer le serveur Tomcat dans Eclipse en mode débogage, vous obtiendrez de telles erreurs. Vous devez passer au débogage prospectif dans Eclipse. J'ai résolu mon problème comme ça.

Jitendra
la source
2

Parfois, si les ports ne sont pas libérés même après avoir essayé shutdown.bat ce que @BalusC a suggéré, vous pouvez tuer le processus javaw. Effectuez les étapes suivantes:

  1. Cliquez sur le menu Démarrer et ouvrez "Windows PowerShell"
  2. Faites un clic droit avant d'ouvrir et sélectionnez "Exécuter en tant qu'administrateur"
  3. Entrez la commande ps. Vous pouvez voir une image comme suit: Powershell montrant les processus en cours d'exécution

  4. Voir le numéro de processus du processus "javaw". Le numéro de processus est le numéro le plus à droite dans les colonnes, j'ai mis en évidence dans l'image le numéro de processus de javaw par exemple.

  5. Entrez la commande kill. javaw est tué et vous devez maintenant pouvoir exécuter le programme.

Petit Jaguar
la source
1
Veuillez consulter ma nouvelle réponse dans laquelle j'inclus un script PowerShell pour automatiser cela.
Xharlie
2

Voici une autre option à essayer si aucun des efforts ci-dessus n'a aidé. Vous utilisez peut-être Eclipse à partir d'un lecteur partagé (par exemple, H :) . Si c'est le cas, déplacez / copiez l'intégralité du répertoire Eclipse vers C: et réessayez.

Mon Eclipse n'a pas pu ouvrir les ports du serveur Tomcat (avec l'erreur ci-dessus), ni même se connecter à Internet. J'ai également essayé un autre plugin Tomcat (Sysdeo) qui n'a pas réussi à ouvrir les ports aussi.

Ce sont les options que j'ai essayées:

Vérifier et tuer d'autres instances Tomcat

  • Dans l'invite de commande, netstat -anoet vérifiez si d'autres processus utilisent les ports en conflit.
  • Trouvez le PID et tuez-le
  • Essayez de redémarrer le serveur.

Modifier les ports Tomcat dans Eclipse

  • Dans l'onglet Eclipse Server, double-cliquez sur l'instance Tomcat. Cela ouvrira l'onglet de configuration.
  • Sous Ports, modifiez les numéros de port. (par exemple, 18080).

Tuez java.exe et javaw

Voir mon autre réponse pour Eclipse ne se connectant pas à Internet ( https://stackoverflow.com/a/37246087/4212710 ).

typoerrpr
la source
2

Pour les utilisateurs de Windows:

Accédez directement au Gestionnaire des tâches avec la combinaison de touches CTRL + MAJ + ÉCHAP.

Tuez les processus "java.exe" en cliquant avec le bouton droit et en sélectionnant "Fin de tâche".

Arif Acar
la source
2

J'ai vérifié toutes les réponses mais informing only to kill PID.

Dans le cas où vous avez un accès au terminal partagé par tous, cela n'aidera pas ou peut - être que vous n'avez pas la permission de tuer PID .

Dans ce cas, vous pouvez:

Double click on server

Go to Overview and change ports in Ports comme ça:

entrez la description de l'image ici

v8-E
la source
1

La solution la plus simple qui fonctionne pour moi consiste à supprimer mes applications Web déployées actuelles de tomcat via l'onglet "Serveur". Une fois que je les ai supprimés, le problème disparaît. Redéployez simplement votre projet en cliquant sur Exécuter en tant que> Exécuter sur le serveur.

Felipe Leão
la source
1

Le problème survient souvent lorsque Apache Tomcat ne se termine pas correctement, même si une instruction d'arrêt a été envoyée. Dans mon cas, en utilisant Tomcat 8, cela se produit avec une régularité agaçante. Heureusement, vous pouvez utiliser Windows PowerShell et lenetstat commande pour créer un script simple pour tuer le processus.

Le script PowerShell suivant analysera la sortie de netstatpour rechercher tout processus qui écoute 127.0.0.1:8005, extraire son PID, puis tuer ce processus:

netstat -a -o -n `
 | select -skip 4 `
 | % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} `
 | ? {$_.Fields[1] -match '127\.0\.0\.1\:8005$'} `
 | % {Write-Host "Killing PID" $_.Fields[4] "..."; taskkill /F /PID $_.Fields[4] }

Si votre server.xmlconfigure Tomcat pour utiliser un port ou IP différent, modifiez l'expression régulière sur la quatrième ligne du script en conséquence.

Enfin, je dois souligner que la situation est meilleure sous Linux car vous pouvez demander à Tomcat d'enregistrer son PID dans un fichier au démarrage et d'utiliser un commutateur pour forcer l'arrêt, plus tard - le script d'arrêt pour les systèmes 'nix comprend déjà le la capacité de tuer le processus et le travail de détective netstatn'est pas requise.

Xharlie
la source
1

Si le problème ci-dessus se produit dans le système d'exploitation Windows 7 ou 10, le problème se produit car Tomcat s'exécute en tant que service Windows. Pour arrêter Tomcat en tant que services Windows, ouvrez le Panneau de configuration Windows. Recherchez le service "Apache Tomcat" et arrêtez-le. Une autre façon est de tuer le processus en cours d'exécution sur le port 8080 à l'aide de cmd.

Ouvrez cmd en l'exécutant en tant qu'administrateur.

  1. C: \ utilisateurs \ nom d'utilisateur> netstat -o -n -a | findstr 0.0: 8080
  2. TCP 0.0.0.0:8080 0.0.0.0:0 ECOUTE 2160.
  3. Le 2160 ci-dessus est l'ID de processus du processus exécuté sur le port 8080 et tuez ce processus en utilisant la commande suivante
    C: \ users \ username> taskkill / F / PID 2160
  4. Accédez à IDE et démarrez le serveur, il s'exécutera
Shreeram Reddy
la source
1

Cela peut être dû au fait que vous n'arrêtez pas correctement votre service tomcat. Pour ce faire, ouvrez votre gestionnaire de tâches où vous pouvez voir un javaw.exeservice. Arrêtez d'abord ce service. Maintenant, redémarrez votre tomcat, cela fonctionne bien.

Ram Thota
la source
1

Dans mon cas, cela me donnait l'erreur: port 8005 requis par le serveur Tomcat v8.0 sur localhost est déjà utilisé

J'ai changé le port 8005 dans apache-tomcat-8.0.39 \ conf \ server.xml mais les changements ne se reflétaient pas. Ensuite, j'ai fait ces changements depuis l'éclipse. en double-cliquant sur le serveur et en modifiant le port de 8005 à 8006 et cela fonctionne. entrez la description de l'image ici

Avant de mettre 8006, j'ai vérifié dans le shell Windows si ce port est disponible ou non. En exécutant la commande suivante:

netstat -a -o -n | findstr 8006
Tahir Akram
la source
1

Je fais face au même problème et après avoir recherché la réponse comme indiqué ci-dessous: 1. ouvrez Monitor Tomcat comme indiqué ci-dessous: entrez la description de l'image ici

  1. Appuyez simplement sur l'arrêt comme indiqué dans l'image ci-dessous:

entrez la description de l'image ici

Enfin, cela fonctionne avec moi après de nombreux essais et des solutions suggérées.

Cordialement, Kerelos Mikhail

Kerelos
la source
0

Sur Eclipse, effectuez une suppression brute du dossier de configuration Tomcat sous le projet "Serveurs". Je l'ai essayé comme dernier espoir et cela a fonctionné.

giocorito
la source
0

Dans le cas de Windows, j'ai rencontré un nouveau problème ... l'arrêt de Tomcat du dossier / bin ne libérera pas immédiatement le port 8080. Il faut environ 5 à 10 minutes pour libérer le port. Après 10 minutes à nouveau si j'essaie d'exécuter mon projet, Run-> Run on server .. il permet de fonctionner.

Je ne sais pas si ma compréhension est correcte!

Laxman
la source
0

Cela se produit lorsque d'autres membres du projet utilisent également les mêmes numéros de port que vous utilisez! double-cliquez sur le serveur tomcat, changez les numéros de port en n'importe quoi 8585 ou autre. Le code va maintenant commencer à s'exécuter!

Shivendra
la source
0

Comment tuer un service Windows en utilisant PID -

  1. ouvrez l'invite de commande et tapez netstat -ano
  2. trouver le PID des ports qui sont utilisés, dans ce cas, ce sera 8080, 8005,8009. Disons que le PID de ces ports est 5760.
  3. Tapez maintenant taskkill /f /pid 5760
  4. il fermera le PID et les ports seront disponibles pour utilisation. Vous pouvez maintenant démarrer tomcat comme d'habitude par les services Windows ou par éclipse elle-même.

Merci

tuer un service Windows bloqué à l'arrêt ou au démarrage

Pankaj Barnwal
la source
0

Plusieurs ports (8005, 8080, 8009) requis par Tomcat vX.X Server sur localhost sont déjà utilisés

Pour vérifier si une autre instance de Tomcat déjà en cours d'exécution ou un autre processus utilise les ports, vous pouvez utiliser:

netstat -b -adans l'invite de commande pour Windows. Cela répertorie les ports utilisés et vous donne l'exécutable qui utilise chacun. Vous devez être dans le groupe administrateur pour ce faire.

Vous pourriez obtenir quelque chose comme ceci:

TCP 192.168.0.1:8009 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8080 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8005 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

Ouvrez le gestionnaire de tâches Ctrl+ Shift+ Esc, et tuez Tomcat7.exeou tout autre processus utilisant ces ports.

Zeeshan
la source
Veuillez consulter ma nouvelle réponse dans laquelle j'inclus un script PowerShell pour automatiser cela.
Xharlie
0

Votre Tomcat fonctionne probablement déjà. C'est pourquoi vous avez une erreur. J'ai déjà eu le même problème. Je l'ai résolu très simplement:

  1. Redémarrez votre ordinateur
  2. Eclipse ouverte
  3. Lancez votre Tomcat

C'est tout.

Purgoufr
la source