Erreur Tomcat java.net.BindException: adresse déjà utilisée en Java

1. Vue d'ensemble

Dans ce rapide didacticiel, nous examinerons les causes de l' erreur commune java.net.BindingException: Erreur déjà utilisée et comment nous pouvons y faire face.

2. Quand l'erreur se produit-elle?

Comme nous le savons, le serveur Apache Tomcat utilise par défaut le port 8080.

Les numéros de port vont de 0 à 65535, cependant, un port ne peut être occupé que par une seule application à la fois .

L'exception indique que l'application essaie d'utiliser un port déjà utilisé par un autre processus ou que nous n'avons pas correctement arrêté le serveur Tomcat.

3. Diagnostiquer

Pour résoudre cette erreur, nous pouvons soit tuer le service prenant ce port, soit changer notre serveur Web pour qu'il s'exécute sur un autre port.

3.1. Découvrir le conflit

Dans ce cas, nous devons savoir quelle application utilise le port.

La commande netstat peut être utilisée pour découvrir les connexions TCP / IP actuelles.

Vous trouverez ci-dessous les commandes qui peuvent être utilisées pour rechercher et tuer le processus dans différents environnements.

Sous Windows, la dernière colonne de sortie nous donnera l'ID de processus du service actuellement exécuté sur 8080:

netstat -ano | find "8080"

Production:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376 

Ici, 21376 est l'identifiant de processus du processus qui écoute sur le port 8080.

Sur un environnement Unix / Linux :

netstat -pant | grep "8080"

Production:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376 

Identique à la sortie Windows. Ici, 21376 est l'identifiant de processus du processus qui écoute sur le port 8080.

Sur Mac OS X:

lsof -t -i :8080

Production:

21376

Il affichera uniquement le PID.

3.2. Exécution du serveur sur un autre port

Si nous savons quel processus est en cours d'exécution, pourquoi il est en cours d'exécution et qu'il doit s'exécuter sur ce port, nous pouvons changer le port sur lequel notre application serveur tente de s'exécuter.

Pour changer le port Tomcat, nous devons éditer le fichier server.xml . Pour faire ça:

  • Ouvrez le dossier tomcat / conf
  • modifier server.xml
  • remplacer le port du connecteur par le nouveau port
  • redémarrer le serveur tomcat

Le fichier server.xml ressemble à ceci:

Maintenant, Tomcat fonctionnera sur le port personnalisé.

3.3. Tuer le service en cours d'exécution

Pour arrêter le processus en cours, nous pouvons utiliser la commande kill .

En utilisant l'ID de processus que nous avons trouvé dans 3.1., Nous aurons besoin de différentes commandes en fonction du système d'exploitation que nous exécutons.

Sur l'environnement Windows:

taskkill /F /PID 21376

Sur un environnement Unix / Linux:

kill - 21376

Environnement Mac OS X:

kill -9 21376

4. Conclusion

Comme mentionné au début de l'article, java.net.BindingException est une erreur courante mais facile à résoudre.

La principale difficulté est de trouver le service en conflit en utilisant le port avec l' application de terminal netstat puis de décider de la marche à suivre appropriée.

Une fois découvert, le correctif est facile.