2011-12-07 23 views
6

Dostaję wyjątku na konsoli, która jest 8083:java.lang.Exception: Port już w użyciu

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

Jak rozwiązać ten wyjątek? Jeśli dostanę usługę, która używa portu 8083, mogę zatrzymać tę usługę iw ten sposób mogę rozwiązać ten problem.

Dzięki za pomoc!

+0

Jak otrzymujesz ten wyjątek? A jakiego używasz systemu operacyjnego? Nie możemy zgadywać tutaj. –

+7

Spróbuj 'netstat -a' –

+0

Proszę rozważyć zaakceptowanie mojej odpowiedzi poniżej, jeśli była pomocna. – Gray

Odpowiedz

10

java.lang.Exception: Port 8083 jest już w użyciu.

Błąd oznacza, że ​​inna aplikacja ma już ten port powiązany, więc nie można z niego korzystać. Zazwyczaj oznacza to, że serwer działa (lub wychodzi), ale wciąż ma otwarty określony port. Często ten błąd jest podawany, gdy próbujesz zamknąć jeden serwer i wywołać nową wersję, ale pierwszy serwer nie jest całkowicie wyłączony po uruchomieniu nowego. Musisz znaleźć odpowiedni serwer i być może będziesz musiał go zabić przy użyciu kill -9 lub czegoś podobnego.

Dobrym narzędziem do sprawdzenia, która aplikacja ma otwarty port, jest lsof. Powinno to działać w większości systemów uniksowych (Linux) i MacOSX przynajmniej.

lsof -i :8083 

lsof jest nieruchomość otwartych plików w systemie ale opcja -i jest dla adresów internetowych:

-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

Albo zakończ proces, który używa portu 8083, albo skonfiguruj swoją aplikację do pracy na innym porcie. Inteligentne aplikacje próbują automatycznie korzystać z alternatywnego portu.

5

Wyjątek jest zgłaszany, ponieważ próbujesz powiązać port, który jest już używany przez inny proces.

Za pomocą linii poleceń wyświetli się lista otwartych portów i proces, który ich używa. Niż możesz go zabić.

Aktualizacja:

W systemie Windows można użyć netstat -ao notować wszystko w portach używania wraz z identyfikatorem procesu, który posiada połączenia.

W systemie Linux można użyć nazwy netstat -p, aby wyświetlić nazwę procesu/nazwę programu.

+0

Na jakim systemie operacyjnym' netstat -a' pokazuje procesy, które mają otwarty port? – Gray

+0

dzięki za pomoc! –

+2

@Gray Myślę, że istnieje flaga -p, której można użyć do wyświetlenia nazwy procesu. –

1

Wyjątek oznacza: istnieje już otwarty port "8083". Rozwiązujesz to albo zatrzymując tę ​​usługę, albo korzystając z innego portu.

Domyślam się, że Twoja własna usługa jest już uruchomiona podczas próby uruchomienia, więc zatrzymaj starą instancję przed uruchomieniem nowej.

(wiem Tomcat działa na 8080, a czasem ludzie się zmieniają, że do 8083, ale jego niemożliwe, aby ktokolwiek wie, co usługa jest uruchamiana na komputerze za pomocą tego portu.)

0

Jeśli uruchamiasz serwer do wdrażania swojej aplikacji może się zdarzyć, że jakikolwiek inny proces lub aplikacja korzysta z tego portu. Outlook, Skype lub inne aplikacje czasami to robią w mojej pracy. Użyj programu takiego jak CPorts, aby zabić to połączenie i ponownie uruchomić serwer.

6

uzyskać to z serwera JBoss raz na jakiś czas. Nie jest intuicyjne, że będziesz musiał ponownie uruchomić Javę, ale powyższe metody nie zadziałały.

Dla Mac OS X:

SLOW

  1. Otwarte Activity Monitor.
  2. Filtruj według "java"
  3. Zamknij wszystkie procesy (zwykle tylko jedno).
  4. Uruchom ponownie serwer.

FAST

ps aux | grep 'java' notować bieżących procesów Java i ich identyfikatory.

kill -9 process_id_goes_here

0

Jest jeszcze inna możliwość: można próbować wiązać się z niewłaściwym adresem IP - JBoss zgłosi to jako niezdolny do wiązania się z portu.

Sprawdź opcję -b na swoim run.sh i upewnij się, że jest to 0.0.0.0 lub IP lub nazwa hosta serwera.
- Jeśli jest to 0.0.0.0, to problem polega na tym, że port jest w użyciu.
- Jeśli jest to IP, sprawdź, czy jest to poprawne IP używając/sbin/ifconfig (lub ipconfig w systemie Windows)
- Jeśli jest to nazwa hosta, a następnie uruchomić
    telnet hostname_here
    i sprawdzić, czy Adres IP, który jest rozpoznawany, to poprawny adres IP.

Miałem ten dokładny problem i odkryłem, że ktoś podał zły adres IP w pliku/etc/hosts. Po naprawieniu pliku JBoss zaczął działać poprawnie.

0

W Eclipse, jeśli masz ten błąd, oznacza to, że istnieje jeden lub dwa wystąpienia Eclipse używające tego samego portu.

Rozwiązaniem jest przejście do zarządzania procesem systemu operacyjnego i zabicie procesów Eclipse i java .

0

Upewnij się, że porty są różne w obu przypadkach JBoss w pliku conf/bindingservices.beans/META-INF/wiązań-jboss-beans.xml

Istnieje około 10 portów, aby zmienić

Powiązane problemy