2011-12-07 15 views
6

Sto ottenendo un'eccezione sulla console che è:java.lang.Exception: Port 8083 già in uso

java.lang.Exception: Port 8083 already in use. 

Come risolvere questa eccezione? Se otterrò quale servizio utilizza la porta 8083, posso interrompere il servizio e in questo modo posso risolvere questo problema.

Grazie per il vostro aiuto!

+0

Come sono ottieni questa eccezione? E quale sistema operativo stai usando? Non possiamo indovinare qui. –

+7

Prova 'netstat -a' –

+0

Per favore considera di accettare la mia risposta qui sotto se fosse utile – Gray

risposta

10

java.lang.Exception: Porta 8083 già in uso.

L'errore indica che un'altra applicazione dispone già di quella porta in modo che non sia possibile utilizzarla. In genere significa che un server è in esecuzione (o è in uscita) ma ha ancora la porta specifica aperta. Spesso questo errore viene rilevato quando si tenta di arrestare un server e di visualizzare la nuova versione, ma il primo server non è completo quando viene avviato il nuovo. Devi trovare il server in questione e potresti doverlo uccidere usando o qualcosa del genere.

Un buon strumento per scoprire quale applicazione ha la porta aperta è lsof. Questo dovrebbe funzionare sotto la maggior parte degli Unix (Linux) e MacOSX almeno.

lsof -i :8083 

lsof è per l'elenco dei file aperto su un sistema, ma l'opzione -i è per gli indirizzi internet:

-i [i] This option selects the listing of files any of whose Internet 
     address matches the address specified in i. 
     [46][protocol][@hostname|hostaddr][:service|port] 
0

Terminare il processo che utilizza la porta 8083 o configurare l'applicazione per l'esecuzione su un'altra porta. Le applicazioni intelligenti cercano di utilizzare automaticamente una porta alternativa.

5

L'eccezione viene generata perché si sta tentando di eseguire il binding a una porta già utilizzata da un altro processo.

Utilizzare netstat -a dalla riga di comando per visualizzare un elenco di porte aperte e il processo che le sta utilizzando. Di quanto tu possa ucciderlo.

Aggiornamento:

Su Windows è possibile utilizzare netstat -ao per elencare tutte le porte utilizzare insieme con l'ID di processo che possiede la connessione.

Su Linux è possibile utilizzare netstat -p per elencare l'ID processo/nome del programma.

+0

Su quale sistema operativo' netstat -a' mostra i processi che hanno la porta aperta? – Gray

+0

grazie per l'aiuto! –

+2

@Gray Penso che ci sia un flag -p che potresti usare per mostrare il nome del processo –

1

L'eccezione indica: esiste già una porta "8083" aperta. Lo risolvi arrestando il servizio o utilizzando una porta diversa.

Direi che il proprio servizio è già in esecuzione quando si tenta di avviarlo, quindi interrompere la vecchia istanza prima di avviarne una nuova.

(lo so Tomcat viene eseguito su 8080 e, a volte la gente cambiare la situazione al 8083, ma la sua impossibile per chiunque di sapere quale servizio viene eseguito sulla macchina che utilizza quella porta.)

0

Se si avvia un server per la distribuzione tua l'applicazione può accadere che qualsiasi altro processo o applicazione stia usando quella porta. Outlook, Skype o altre applicazioni lo fanno a volte nel mio lavoro. Utilizzare un programma come CPorts per uccidere quella connessione e riavviare il server.

6

ottengo questo con il server JBoss ogni tanto un po '. Non è intuitivo che avresti bisogno di riavviare Java, ma i metodi precedenti non hanno funzionato.

Per Mac OS X:

SLOW

  1. Aprire Activity Monitor.
  2. Filtra per "java"
  3. Chiudere tutti i processi (di solito solo uno).
  4. Riavvia il server.

VELOCE

ps aux | grep 'java' per elencare i processi Java in corso ei relativi ID.

kill -9 process_id_goes_here

0

C'è un'altra possibilità: si può tentare di eseguire il binding all'indirizzo IP errato - JBoss segnalerà questo come essere in grado di legarsi alla porta.

Controllare l'opzione -b contro run.sh e assicurarsi che sia 0.0.0.0 o l'IP o il nome host del server.
- Se è 0.0.0.0, il problema è che la porta è in uso.
- Se è l'IP, verificare che sia l'IP corretto usando/sbin/ifconfig (o ipconfig in Windows)
- Se è il nome dell'host, quindi eseguire
    telnet hostname_here
    e verificare che il L'indirizzo IP che si risolve è l'indirizzo IP corretto.

Avevo questo problema esatto e ho scoperto che qualcuno aveva inserito l'indirizzo IP sbagliato nel file/etc/hosts. Una volta risolto il problema, JBoss è partito bene.

0

In Eclipse, se si verifica questo errore, significa che ci sono una o due istanze di Eclipse che utilizzano la stessa porta.

La soluzione è passare al gestore processi del sistema operativo e terminare i processi Eclipse e java.

0

Assicurarsi che le porte sono diversi su due istanze JBOSS nel file conf/bindingservices.beans/META-INF/binding-jboss-beans.xml

Ci sono circa 10 le porte per cambiare