Dans Eclipse, j'ai cette erreur:
run:
[java] Error creating the server socket.
[java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
[java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
[java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds
Je ne sais pas pourquoi cela s'est produit maintenant, mais cela a bien fonctionné il y a quelques heures à peine. Dois-je redémarrer ma machine? Comment puis-je aller au fond des choses? J'apprécie tous les trucs ou conseils.
Réponses:
Oui, vous avez un autre processus lié au même port.
TCPView (Windows uniquement) à partir de Windows Sysinternals est mon application préférée chaque fois que j'ai une erreur JVM_BIND. Il montre quels processus écoutent sur quel port. Il fournit également un menu contextuel pratique pour soit tuer le processus, soit fermer la connexion qui gêne.
la source
netstat
est la commande que vous recherchez, avec les options -a et -p,man netstat
est votre ami pour tout le reste :)Si vous savez quel port le processus est en marche , vous pouvez taper:
lsof -i:<port>
.Par exemple,
lsof -i:8080
pour lister le processus (pid) s'exécutant sur le port 8080.Puis tuez le processus avec
kill <pid>
la source
sudo apt-get install lsof
java.net.BindException: Address already in use (Bind failed)
j'ai utiliséelsof -i:8080
et obtenuetcp6 0 0 :::8080 :::* LISTEN 106872/java
. Que devrais-je faire ? Tuez java ??htop
. Peut-être que vous essayez de vous lier à un port utilisé par un programme valide qui ne devrait pas être tué.Dans windows
listera tous les protocoles, ports et processus à l'écoute. Utilisation
pour tuer le processus écoutant le port. par exemple
la source
find
n'a pas fonctionné maisfindstr
a fonctionné. Pour éviter les faux positifs, il aide également à ajouter un deux-points, par exemplenetstat -ano | findstr :8080
. Après avoir fait cela - disons que cela a renvoyé un PID de 1234 - si vous souhaitez ensuite rechercher le nom de ce processus, vous pouvez le faire viatasklist /fi "pid eq 1234
".Sous Mac:
Tuer le terminal de processus :
kill <pid>
Trouver pid: Terminal:
lsof -i:<port>
De Diego Pino réponse
la source
Dans Ubuntu / Unix, nous pouvons résoudre ce problème en 2 étapes comme décrit ci-dessous.
Type
netstat -plten |grep java
Cela donnera une sortie similaire à:
Voici
8080
le numéro de port sur lequel le processus java écoute et9488
son identifiant de processus (pid).Afin de libérer le port occupé, nous devons tuer ce processus en utilisant la
kill
commande.9488
est l'identifiant de processus antérieur. Nous utilisons-9
pour forcer l'arrêt du processus.Votre port devrait maintenant être libre et vous pouvez redémarrer le serveur.
la source
(Windows seulement)
Pour tuer un processus, vous devez d'abord trouver l'ID du processus (pid)
En exécutant la commande:
Vous obtiendrez votre identifiant de processus (PID), maintenant pour tuer le même processus, exécutez cette commande:
la source
Vous avez un autre processus en cours d'exécution sur le même port.
Vous pouvez essayer de tuer l'un des services java.exe exécutés dans votre gestionnaire de tâches - ps assurez-vous de ne pas tuer eclipse car il est également répertorié sous le nom de java.exe. Si rien d'autre ne fonctionne, le redémarrage de votre machine résoudra le problème de toute façon. Il semble que vous ne coupiez pas une socket d'un test précédent. J'espère que cela t'aides.
la source
Pour ceux qui recherchent la plus simple des réponses (car c'est ce qui nous manque généralement), arrêtez simplement votre projet en cours et redémarrez-le. La plupart du temps, nous oublions d'arrêter le projet que nous avons exécuté plus tôt et lorsque nous réexécutons le projet, un tel problème apparaît.
Je joins également une photo pour la rendre plus claire (j'utilise 'Spring tool suite'). Donc, ce que vous devez faire est soit de cliquer sur le bouton à l'extrême droite, si vous souhaitez relancer le même projet, soit de cliquer d'abord sur le bouton qui est le 2ème à partir de la droite pour arrêter votre projet puis sur le bouton à l'extrême gauche pour l'exécuter votre projet. J'espère que cela résoudra le problème de quelques-uns des nouveaux programmeurs. :)
la source
Dans la ligne Windows CMD, recherchez l'ID de processus qui détient une connexion sur le port de liaison en entrant la commande suivante:
C:> netstat -a -o
-a afficher toutes les connexions
-o afficher l'identifiant du processus
Et puis mettre fin au processus.
la source
Oui, comme l'a dit Guido Simone parce qu'un autre processus écoute le même port.Si vous êtes dans Ubuntu, vous pouvez simplement tuer ce processus en donnant la commande
sudo kill $(sudo lsof -t -i:[port number])
ex:
sudo kill $(sudo lsof -t -i:8080)
Mais une fois, cela n'a pas fonctionné pour moi. j'ai donné la commande
et cela ne montre rien.
J'ai vérifié mes conteneurs docker à l'aide de la commande
docker ps -a
mais aucun d'entre eux n'est en vie.Tous les conteneurs se sont arrêtés (mais je me souviens, j'ai arrêté un conteneur qui était utilisé dans le même port il y a quelques minutes.). processus docker à l'aide de la commandesudo service docker stop
et réessayez. Étonnamment, eclipse n'a pas montré l'erreur à ce moment-là. Il a parfaitement exécuté mon programme.J'espère que mon expérience aidera quelqu'un.
la source
Vous devez fermer votre port si vous êtes un utilisateur Linux puis tapez
la source
Le port est déjà utilisé par un autre processus comme @Diego Pino a dit que vous pouvez utiliser lsof sous unix pour localiser le processus et tuer le processus respectif, si vous êtes sous Windows, utilisez netstat -ano pour obtenir tous les pids du processus et le ports que tout le monde acquiert. recherchez votre port prévu et tuez.
pour être très simple, redémarrez simplement votre machine, si c'est possible :)
la source
Redémarrez le PC une fois, je pense que cela fonctionnera. Cela a commencé à fonctionner dans mon cas. Une dernière chose peut être faite, accédez au Gestionnaire des tâches et terminez le processus.
la source
Dans mon cas, Tomcat fonctionnait en arrière-plan. Je l'ai installé en tant que servlet externe lors de l'utilisation d'Eclipse. Avec un Spring Boot dans Intellij, il a son propre serveur mais ne peut pas démarrer tant qu'il est déjà occupé.
Dans mon cas, Tomcat démarre automatiquement, j'allume mon système d'exploitation, c'est pourquoi je dois l'arrêter manuellement:
bien sûr, "tomcat" dépend de la version de tomcat que vous utilisez.
J'espère que cela pourrait aider quelqu'un.
la source
J'ai rencontré un problème similaire dans Eclipse lorsque deux consoles ont été ouvertes lorsque j'ai démarré le programme Server d'abord, puis le programme Client. J'avais l'habitude d'arrêter le programme dans la console unique en pensant qu'il avait fermé le serveur, mais qu'il n'avait fermé que le client et non le serveur. J'ai trouvé des processus Java en cours d'exécution dans mon gestionnaire de tâches. Ce problème a été résolu en fermant les programmes serveur et client à partir de leurs consoles individuelles (Eclipse affiche la console du dernier programme actif). Ainsi, lorsque j'ai redémarré le programme Server, le port était à nouveau ouvert pour être capturé.
la source
Votre port doit être occupé dans un autre processus. Vous pouvez donc télécharger TCPView sur https://technet.microsoft.com/en-us/sysinternals/bb897437 et processus pour le port utilisé.
Si vous ne connaissez pas votre port, double-cliquez sur le serveur qui ne démarre pas et cliquez sur Ouvrir la page des propriétés du serveur et cliquez sur glassfish dans la colonne de gauche. Vous trouverez les ports ici.
la source
(1) vérifier que le port est utilisé ou non, tuer ce processus
$ lsof -i: [port]
(2) une autre raison est que le port est utilisé par ipv6, solution:
éditer /etc/sysctl.conf
ajouter ceci au fichier
net.ipv6.conf.all.disable_ipv6 = 1
alors fais-le effet
$ sudo sysctl -p /etc/sysctl.conf
ou simplement redémarrer
la source
Cela signifie qu'un autre processus utilise déjà le port. Dans le cas où ce port est utilisé par d'autres applications critiques et que vous ne souhaitez pas fermer cette application, la meilleure façon est de choisir un autre port qui est libre d'utilisation.
Configurez votre application pour utiliser n'importe quel autre port qui est gratuit et vous verrez votre application fonctionner.
la source
Pour Windows :
Trouvez l'identifiant du processus
netstat -nao | trouver "8080"
Il vous montrera l'ID de processus sous forme de nombre.
Exemple :
Ici 18856 est l'ID de processus
Tuez ce processus
taskkill / PID 18856 / F
Production : SUCCÈS: le processus avec PID 18856 est terminé.
Ici, en utilisant taskkill, vous tuez l'ID de processus: 18856
Pour Linux / Mac :
Vous trouverez ici le processus en utilisant
sudo lsof -t -i:8080
et en le tuant par la commande sudo killla source