Hoe los ik de java.net.BindException: adres al in gebruik: JVM_Bind fout op?

In Eclipse kreeg ik deze fout:

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

Ik weet niet zeker waarom het nu opkwam, maar een paar uur geleden werkte het prima. Moet ik mijn machine opnieuw opstarten? Hoe kom ik er tot op de bodem? Ik waardeer alle tips of advies.


Antwoord 1, autoriteit 100%

Ja, u heeft een ander proces gekoppeld aan dezelfde poort.

TCPView (alleen Windows) van Windows Sysinternals is mijn favoriete app wanneer ik een JVM_BIND-fout heb. Het laat zien welke processen op welke poort luisteren. Het biedt ook een handig contextmenu om het proces te beëindigen of de verbinding te sluiten die in de weg staat.


Antwoord 2, autoriteit 98%

Als je weet op welke poort het proces draait, kun je typen:
lsof -i:<port>.

Bijvoorbeeld lsof -i:8080, om het proces (pid) op poort 8080 weer te geven.

Sluit vervolgens het proces af met kill <pid>


Antwoord 3, autoriteit 82%

In vensters

netstat -ano

geeft een lijst van alle protocollen, poorten en processen die luisteren.
Gebruik

taskkill -pid "proces to kill" /f

om het proces dat naar de poort luistert te beëindigen.
bijv.

 taskkill -pid 431 /f

Antwoord 4, autoriteit 26%

In Ubuntu/Unix kunnen we dit probleem in 2 stappen oplossen, zoals hieronder beschreven.

  1. Typ netstat -plten |grep java

    Dit geeft een uitvoer die lijkt op:

    tcp   0   0 0.0.0.0:8080   0.0.0.0:*  LISTEN   1001  76084  9488/java       
    

    Hier is 8080 het poortnummer waarop het Java-proces luistert en 9488 is het proces-ID (pid).

  2. Om de bezette poort vrij te maken, moeten we dit proces beëindigen met het commando kill.

    kill -9 9488
    

    9488 is de proces-ID van eerder. We gebruiken -9 om het proces geforceerd te stoppen.

Uw poort zou nu vrij moeten zijn en u kunt de server opnieuw opstarten.


Antwoord 5, autoriteit 25%

Op Mac:

Doodproces
Terminal: kill <pid>

Vind pid:
Terminal: lsof -i:<port>

Van Diego Pino antwoord


Antwoord 6, autoriteit 20%

(Alleen Windows)

Om een ​​proces te beëindigen moet je eerst de proces-ID (pid) vinden

Door het commando :

. uit te voeren

netstat -ano | findstr :yourPortNumber

Zoals weergegeven in onderstaande afbeelding

Je krijgt je proces-ID (PID), om hetzelfde proces te beëindigen, voer je deze opdracht uit:

taskkill /pid yourid /f

voer hier de afbeeldingsbeschrijving in


Antwoord 7, autoriteit 8%

Voor ramen :

  1. Vind de proces-ID

    netstat -nao | zoek “8080”

Het toont u de proces-ID als een nummer.

Voorbeeld:

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       18856

Hier is 18856 de proces-ID

  1. Dood dat proces

    taakkill /PID 18856/F

Uitvoer: SUCCES: Het proces met PID 18856 is beëindigd.

Hier gebruik je taskkill om de proces-ID:18856 te doden

Voor linux/Mac:

sudo kill -9 $(sudo lsof -t -i:8080)

Hier vindt u het proces met behulp van sudo lsof -t -i:8080 en het doden met het sudo kill-commando


Antwoord 8, autoriteit 5%

Je hebt een ander proces op dezelfde poort draaien.

Je zou kunnen proberen een van de java.exe-services die in je taakbeheer worden uitgevoerd te doden – ps zorg ervoor dat je eclipse niet doodt, want dat wordt ook vermeld als java.exe. Als niets anders werkt, zal het herstarten van uw machine het hoe dan ook oplossen. Het lijkt erop dat u een socket van een eerdere test niet afsluit. Ik hoop dat dit helpt.


Antwoord 9, autoriteit 5%

Voor degenen die op zoek zijn naar de eenvoudigste antwoorden (want dat is wat we meestal missen), stop gewoon je lopende project en begin opnieuw.
Meestal vergeten we het project dat we eerder hebben uitgevoerd te stoppen en wanneer we het project opnieuw uitvoeren, vertoont het een dergelijk probleem.

Ik voeg ook een foto bij om het duidelijker te maken (ik gebruik ‘Spring tool suite’).
Dus wat u moet doen, is ofwel op de knop uiterst rechts klikken als u hetzelfde project opnieuw wilt starten of eerst op de knop klikken die 2e van rechts is om uw project te stoppen en vervolgens op de knop uiterst links om te starten jouw project. Ik hoop dat dit het probleem van enkele van de nieuwere programmeurs zal oplossen. 🙂

voer hier de afbeeldingsbeschrijving in


Antwoord 10, autoriteit 3%

Zoek in de Windows CMD-regel de proces-ID die een verbinding op de bindpoort heeft door het volgende commando in te voeren:

C:> netstat -a -o

-a toon alle connecties

-o proces-ID tonen

En dan Beëindig het proces.


Antwoord 11, autoriteit 3%

U moet uw poort sluiten
als je een linux-gebruiker bent, typ dan

fuser -k 8080/tcp

Antwoord 12, autoriteit 2%

Ja, zoals Guido Simone het zei omdat een ander proces naar dezelfde poort luistert. Als je in Ubuntu bent, kun je dat proces eenvoudigweg beëindigen door een commando te geven
sudo kill $(sudo lsof -t -i:[port number])

ex: sudo kill $(sudo lsof -t -i:8080)

Maar een keer werkte het niet voor mij.
ik gaf het commando

$ lsof -i:[port] 

en er wordt niets weergegeven.

Ik heb mijn docker-containers gecontroleerd met het commando
docker ps -a maar geen van hen leeft. Alle containers zijn gestopt
(maar ik herinner me dat ik een container heb gestopt die enkele minuten geleden dezelfde poort werd gebruikt.). Om ervoor te zorgen dat docker niet de reden is, stop ik het hele docker-proces met het commando sudo service docker stop en probeer nog een keer.
Verrassend genoeg toonde eclipse de fout op dat moment niet. Het voert mijn programma perfect uit.

Ik hoop dat mijn ervaring iemand kan helpen.


Antwoord 13

De poort wordt al door een ander proces gebruikt, aangezien @Diego Pino zei dat je lsof op Unix kunt gebruiken om het proces te lokaliseren en het betreffende proces te beëindigen. Als je in Windows werkt, gebruik dan netstat -ano om alle pids van de proces en de poorten die iedereen verwerft. zoek naar je beoogde poort en kill.

om heel gemakkelijk te zijn, herstart je computer, als dat mogelijk is 🙂


Antwoord 14

Start de pc een keer opnieuw op, ik denk dat het zal werken. In mijn geval begon het te werken. Er kan nog een ding worden gedaan, ga naar Taakbeheer en beëindig het proces.

Screenshot voor de referentie.


Antwoord 15

In mijn geval draaide Tomcat op een achtergrond. Ik heb het als een externe servlet geïnstalleerd tijdens het gebruik van Eclipse.
Met een Spring Boot in Intellij heeft het zijn eigen server, maar kan het niet starten terwijl het al bezet is.
In mijn geval start Tomcat automatisch. Ik zet mijn besturingssysteem aan, daarom moet ik hem handmatig afsluiten:

$ sudo service tomcat stop

natuurlijk hangt “tomcat” af van welke versie van Tomcat je gebruikt.

Ik hoop dat het iemand kan helpen.


Antwoord 16

Ik had een soortgelijk probleem in Eclipse toen twee consoles werden geopend toen ik eerst het Server-programma startte en daarna het Client-programma. Ik stopte het programma in de enkele console omdat ik dacht dat het de server had gesloten, maar het had alleen de client gesloten en niet de server. Ik vond het draaien van Java-processen in mijn Taakbeheer. Dit probleem is opgelost door zowel server- als clientprogramma’s van hun individuele consoles te sluiten (Eclipse toont console van het laatste actieve programma). Dus toen ik het Server-programma opnieuw startte, stond de poort weer open om te worden vastgelegd.


Antwoord 17

Uw poort moet bezet zijn in een ander proces. U kunt TCPView dus downloaden op https://technet.microsoft.com/en-us/sysinternals /bb897437 en stop het proces voor gebruikte poort.

Als u uw poort niet weet, dubbelklik dan op de server die niet start en klik op Open Server Properties Page en klik op glassfish in de linkerkolom. U vindt de poorten hier.


Antwoord 18

(1) controleer of de poort in gebruik is of niet, stop dat proces

$ lsof -i:[port]

(2) een andere reden is dat de poort wordt gebruikt door ipv6, oplossing:

bewerk /etc/sysctl.conf

voeg dit toe aan het bestand

net.ipv6.conf.all.disable_ipv6 = 1

maak het dan effect

$ sudo sysctl -p /etc/sysctl.conf

of gewoon opnieuw opstarten


Antwoord 19

Het betekent dat een ander proces de poort al gebruikt. Als deze poort wordt gebruikt door andere kritieke toepassingen en u die toepassing niet wilt sluiten, kunt u het beste een andere poort kiezen die gratis te gebruiken is.

Configureer uw applicatie om een ​​andere poort te gebruiken die gratis is en u zult zien dat uw applicatie werkt.


Antwoord 20

U kunt elk Java-proces sluiten en uw app opnieuw starten:

taskkill /F /IM java.exe

start je app opnieuw…

LEAVE A REPLY

Please enter your comment!
Please enter your name here

seventeen − eight =

Other episodes