Dans Eclipse, j'ai eu 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 suis pas sûr de savoir pourquoi cela est arrivé maintenant, mais tout s'est bien passé il y a quelques heures. Dois-je redémarrer ma machine? Comment puis-je aller au fond des choses? J'apprécie des conseils ou des conseils.
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 arrêter le processus ou fermer la connexion qui vous gêne.
Si vous connaissez le port utilisé par le processus, vous pouvez taper: lsof -i:<port>
.
Par exemple, lsof -i:8080
, pour répertorier le processus (pid) exécuté sur le port 8080.
Puis tuez le processus avec kill <pid>
Aux fenêtres
netstat -ano
listera tous les protocoles, ports et processus d’écoute . Utilisez
taskkill -pid "proces to kill" /f
pour tuer le processus en écoutant le port .
taskkill -pid 431 /f
Sur Mac:
Kill process Terminal: kill <pid>
Trouver le pid: Terminal: lsof -i:<port>
De Diego Pino répondre
Dans Ubuntu/Unix nous pouvons résoudre ce problème en 2 étapes, comme décrit ci-dessous.
Tapez netstat -plten |grep Java
Cela donnera un résultat similaire à:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1001 76084 9488/Java
Ici, 8080
correspond au numéro de port sur lequel le processus Java écoute et 9488
. est son identifiant de processus (pid).
Afin de libérer le port occupé, nous devons arrêter ce processus à l'aide de la commande kill
.
kill -9 9488
9488
est l'identifiant du processus de plus tôt. Nous utilisons -9
pour forcer l'arrêt du processus.
Votre port devrait maintenant être libre et vous pouvez redémarrer le serveur.
Vous avez un autre processus en cours d'exécution sur le même port.
Vous pouvez essayer de supprimer l’un des services Java.exe exécutés dans votre gestionnaire de tâches. Assurez-vous également de ne pas tuer Eclipse, car il figure également sous le nom Java.exe. Si rien d'autre ne fonctionne, le redémarrage de votre machine le corrigera de toute façon. On dirait que vous ne fermez pas une prise d'un test précédent. J'espère que cela t'aides.
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 montre toutes les connexions
-o Afficher l'identifiant du processus
Et puis Terminez le processus.
Pour ceux qui recherchent la la plus simple des réponses (c’est ce que nous manquons généralement), arrêtez simplement votre projet et relancez-le… le projet que nous avons exécuté précédemment et lorsque nous l'exécutons à nouveau, le problème est réel.
Je joins également une photo pour la rendre plus claire (j'utilise 'Spring tool suite') . Vous devez donc cliquer sur le bouton à l'extrême droite si vous souhaitez relancer le même projet ou cliquer d'abord sur sur le bouton qui est le 2e à partir de la droite pour arrêter votre projet, puis le bouton à l'extrême gauche pour exécuter votre projet. J'espère que cela résoudra le problème de quelques-uns des nouveaux programmeurs. :)
Oui, comme l'a dit Guido Simone, car un autre processus écoute le même port.Si vous êtes dans Ubuntu, vous pouvez simplement supprimer 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 que cela n'a pas fonctionné pour moi ... j'ai donné le commandement
$ lsof -i:[port]
et ça 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 encore en vie.Tous les conteneurs se sont arrêtés (Mais je me souviens, j'ai arrêté un conteneur qui était utilisé le même port il y a quelques minutes.). pas la raison, j’arrête tout le processus du menu fixe à l’aide de la commande Sudo service docker stop
et tente à nouveau… .. Étonnamment, Eclipse n’a pas montré l’erreur à ce moment-là. Il a exécuté mon programme à la perfection.
J'espère que mon expérience aidera quelqu'un.
Le port est déjà utilisé par un autre processus comme @Diego Pino a déclaré que vous pouvez utiliser lsof sous unix pour localiser le processus et tuer le processus respectif. ports que tout le monde acquiert. rechercher votre port prévu et tuer.
pour être très facile, redémarrez votre machine, si c'est possible :)
(1) vérifier si le port est en cours d'utilisation ou non, tuez ce processus
$ lsof -i: [port]
(2) une autre raison est que le port est utilisé par ipv6, solution:
edit /etc/sysctl.conf
ajouter ceci au fichier
net.ipv6.conf.all.disable_ipv6 = 1
alors le faire effet
$ Sudo sysctl -p /etc/sysctl.conf
ou juste redémarrer
J'ai rencontré un problème similaire dans Eclipse lorsque deux consoles ont été ouvertes lorsque j'ai démarré le programme Server, 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 il n'avait fermé que le client et pas le serveur. J'ai trouvé l'exécution de processus Java 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 relancé le programme Serveur, le port était à nouveau ouvert pour être capturé.
Vous devez fermer votre port Si vous êtes un utilisateur linux, tapez
fuser -k 8080/tcp
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 interrompre le processus pour le port utilisé.
Si vous ne connaissez pas votre port, double-cliquez sur le serveur qui ne démarre pas, cliquez sur Ouvrir la page des propriétés du serveur, puis sur glassfish dans la colonne de gauche. Vous trouverez les ports ici.
Cela signifie qu'un autre processus utilise déjà le port. Si ce port est utilisé par d'autres applications critiques et que vous ne souhaitez pas fermer cette application, le mieux est de choisir un autre port libre d'utilisation.
Configurez votre application pour utiliser tout autre port libre et vous verrez que votre application fonctionne.