web-dev-qa-db-fra.com

"Java.net.BindException: adresse déjà utilisée" lorsque j'exécute déjà un service sur le même port

J'ai un programme de socket serveur, lorsque j'exécute ce programme, le message d'erreur suivant s'affiche:

Java.net.BindException: Address already in use
    at Java.net.PlainSocketImpl.socketBind(Native Method)
    at Java.net.PlainSocketImpl.bind(PlainSocketImpl.Java:383)
    at Java.net.ServerSocket.bind(ServerSocket.Java:328)
    at Java.net.ServerSocket.<init>(ServerSocket.Java:194)
    at Server.main(Server.Java:20)
Could not listen on port: 5434.

Un serveur SQL postgres est déjà en cours d'exécution sur ce port, ce qui explique l'erreur. Mon périphérique matériel envoie uniquement des données à ce port 5434.

Quelles sont mes options pour contourner cette erreur?

10
user2346809

Si le port est utilisé par postgresql, vous ne pouvez pas également ouvrir ce port en tant que port de serveur. Fermez postgresql ou utilisez un autre port.

7
Scary Wombat

Mac spécifique

Une instance de mon programme Java était déjà en cours d'exécution et occupait le port. Donc, quand j'ai essayé de démarrer une nouvelle instance, j'ai eu l'erreur. Afin de tuer l'ancienne instance, je fais ce qui suit:

Prompt> lsof -i:5434
COMMAND   PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Java    71107 neoneye   68u  IPv6 0x4a0371dea87d2cd3      0t0  TCP *:http-alt (LISTEN)
Prompt> kill 71107

btw. Je ne recommande pas d'arrêter postgresql de cette façon.

6
neoneye

Découvrez quel programme utilise votre port:

Sudo netstat -nlp | grep 514

udp        0      0 :::514                :::*                            30186/Java

Me dit qu'un programme Java lie le port UDP 514

3
Eric Leschinski

Vous devriez changer votre numéro de port. J'ai eu la même erreur. Après avoir changé mon numéro de port, le problème a été résolu.

1
java.nazif