Kilka portów (8005, 8080, 8009) wymaganych przez serwer Tomcat na serwerze lokalnym jest już używanych


258

Podczas próby uruchomienia prostego programu JSP na Tomcat w środowisku Eclipse pojawia się następujący błąd.

Kilka portów (8005, 8080, 8009) wymaganych przez serwer Tomcat v6.0 na localhost jest już używanych. Serwer może już działać w innym procesie lub proces systemowy może korzystać z portu. Aby uruchomić ten serwer, musisz przerwać inny proces lub zmienić numer (y) portu.

Jak to jest spowodowane i jak mogę to rozwiązać?


Miałem podobny problem, który okazał się zaporą systemu Windows.
James Oravec

Prawdopodobnie jakiś nieumarły proces utrzymuje twojego kota przy życiu. zabij proces, znajdując jego identyfikator i kończąc go lub ponownie uruchamiając komputer.
Felipe Leão

możesz użyć tych poleceń, aby zatrzymać usługi tomcat już uruchomione z konsoli poleceń. netstat -ano | findStr 8080znaleźć uruchomione usługi, a następnie znaleźć identyfikator procesu, skopiować identyfikator pid i ponownie uruchomić polecenie jakotaskkill /F /PID pid_number
Mdhar9e

Odpowiedzi:


473

Masz już uruchomioną inną instancję Tomcat. Możesz to potwierdzić, przechodząc do http://localhost:8080przeglądarki internetowej i sprawdzając, czy masz domyślną stronę główną Tomcat, czy stronę błędu 404 specyficzną dla Tomcat. Oba są równie ważnym dowodem na to, że Tomcat działa dobrze; jeśli tak się nie stanie, otrzymasz komunikat o błędzie przekroczenia limitu czasu połączenia HTTP.

Musisz go zamknąć. Przejdź do /binpodfolderu folderu instalacyjnego Tomcat i uruchom skrypt shutdown.bat(Windows) lub shutdown.sh(Unix). Jeśli na próżno zamknij Eclipse, a następnie otwórz menedżera zadań i zabij wszystko javai / lub javawprocesy.

Lub jeśli z jakiegoś powodu faktycznie zainstalowałeś go jako usługę Windows (jest to przeznaczone głównie do produkcji i nie jest pomocne, gdy dopiero się rozwijasz), otwórz menedżera usług ( Start> Uruchom> services.msc ) i zatrzymaj usługę Tomcat. Jeśli to konieczne, całkowicie odinstaluj usługę Windows. Do programowania wystarczy plik ZIP.

Lub jeśli faktycznie zamierzasz uruchomić jednocześnie dwie instancje Tomcat, musisz skonfigurować drugą instancję, aby nasłuchiwała na różnych portach. Więcej informacji można znaleźć w dokumentacji Tomcat.


1
idealnie, nęka mnie to od zawsze. Wykonałem go jak sh shutdown.shw terminalu w katalogu / bin.
Danny Englander

2
Cześć BalusC, lubię cię! Nie ma shutdown.batw moim folderze bin. Tomcat został zainstalowany jako usługa, a nie jako zip. Zatrzymanie usługi tomcat w usługach rozwiązało problem. Dzięki. Chenqui.
Erran Morad,

1
@ Borat: Nie ma za co. Pamiętaj, że naprawdę lepiej odinstaluj usługę i pobierz zip.
BalusC

6
„zabij wszystkie procesy java i / lub javaw” działały dla mnie, dzięki.
Thariq Nugrohotomo,

3
Otwarcie system monitorlub task managerzabicie procesu Java, który używa about 400 MBlub więcej RAM, również rozwiąże problem. Nieświadomie rezerwuje proces.
viper

55
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • nie ma potrzeby restartowania Eclipse
  • jeśli pojawi się powyższy błąd, wystarczy wpisać ten wiersz w terminalu
  • ponownie uruchom tomcat w Eclipse.
  • działa tylko w systemie Linux (Ubuntu ..etc)

6
Tak jest lepiejkill $(ps -aef | grep java | grep apache | awk '{print $2}')
firesofmay

To nie działa dla mnie (Mennica 17.1). To tylko pomaga mi w wydaniu killpolecenia.
Deleet

To zadziałało dla mnie. Chciałem jednak wiedzieć, czy mam uruchomione 2 instancje i muszę wymusić zatrzymanie jednej z nich za pomocą tej metody. Jak dowiedzieć się, które należy zamknąć. Dzięki
Gautam,

29

Jeśli korzystasz z systemu Windows, wypróbuj to w wierszu polecenia:

netstat -ano

Spowoduje to wyświetlenie wszystkich używanych portów i identyfikatora procesu PID # procesu korzystającego z tego portu. Następnie Ctrl+ Alt+ Deli otwórz Menedżera zadań, aby zobaczyć, który to proces.

Następnie możesz wybrać zamknięcie / zatrzymanie go lub skonfigurowanie serwera do korzystania z innego portu. Aby sprawdzić, czy nowy wybrany port (powiedzmy 8010) jest dostępny, wykonaj następujące czynności:

netstat -ano | grep 8010

Jeśli nie zwróci żadnych wierszy, wszystko jest w porządku.

Aby zmienić port, przejdź do widoku Serwer, otwórz server.xml i zmień tam port. Mój ma ten wpis:

Connector port="8010" protocol="AJP/1.3" redirectPort="8443"

Zobacz moją nową odpowiedź, w której dołączam skrypt PowerShell, aby zautomatyzować to bez konieczności otwierania Menedżera zadań.
Xharlie

1
findstrdla tych bez grepa.
eckes

25

Jeśli pracujesz w środowisku Mac, oto co zrobiłem.

Znajdź identyfikator procesu działający na tym porcie z terminala, np. 8080:

lsof -i :8080

i zabij to:

kill -9 <PID>  

Przykład:

Może zostać wyświetlony następujący wynik:

MacSys:bin krunal.$ lsof -i :8080

COMMAND   PID     USER   FD   TYPE     DEVICE  SIZE/OFF   NODE  NAME
java     21347   krunal  52u  IPv6      XXX      0t0      TCP  *:http-xxx (LISTEN)

i zabij to: ( kill -9 21347)


20

Kroki do zwolnienia portu, który jest już używany do uruchamiania serwera tomcat w Eclipse

Załóżmy na przykład, że używany jest port 8080, musimy zrobić wolne 8080, aby uruchomić tomcat

Krok 1:

C: \ Users \ nazwa użytkownika> netstat -o -n -a | findstr 0.0: 8080

TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 3116

Teraz widzimy, że port LISTENING to 3116 dla 8080,

Musimy teraz zabić 3116

Krok 2:-

C: \ Users \ nazwa użytkownika> taskkill / F / PID 3116

Krok 3: Przejdź do Eclipse i uruchom Serwer, uruchomi się


14

Jeśli używasz Eclipse, kliknij dwukrotnie serwery i kliknij dwukrotnie serwer tomcat, a następnie otworzy się jeden plik. W tym pliku zmień port HTTP na inny numer portu i zapisz ( Ctrl+ S), a następnie ponownie uruchom serwer.


To działało dla mnie, podczas gdy inne rozwiązania nie. Używam mennicy 17.1. Musiałem zainstalować tomcat zarówno przez Eclipse, jak i apt-get, ponieważ nie mogłem znaleźć folderu, w którym apt-get go zainstalował. Prawdopodobnie dlatego mam dwa. Nadal nie mogłem zamknąć pierwszego za pomocą poleceń zabicia.
Deleet

12

Jeśli Eclipse mówi

Kilka portów (8005, 8080, 8009) wymaganych przez serwer Tomcat v6.0 na localhost jest już używanych

Ten błąd pojawia się, ponieważ tomcat może działać w tle, więc najpierw zatrzymaj ten serwer ... postępuj zgodnie z poniższymi szczegółami.

Rozwiązaniem jest:

  1. Otwórz widok „konsoli” (okno-> pokaż widok-> konsola)
  2. Następnie zatrzymaj serwer tomcat.
  3. Następnie otwórz widok „serwer” i uruchom serwer, który będzie działał.

Dzięki!


To zadziałało dla mnie. Próbowałem tylko: sudo service tomcat stop
Emiliano Sangoi

10

Nie mam innej instancji Tomcat z uruchomioną reklamą ani żadnego innego procesu używającego „portu Tomcat” (w moim przypadku portu 8088). Zaćmienie wysyłają tę samą wiadomość po uruchomieniu Tomcat:

.... Serwer może już działać w innym procesie lub proces systemowy może korzystać z portu. Aby uruchomić ten serwer, musisz przerwać inny proces lub zmienić numer (y) portu.

Rozwiązuję problem w ten sposób:

  • idź do kosza tomcat
  • uruchom startup.bat
  • uruchom shutdown.bat
  • uruchom tomcat przez Eclipse

1
Mój problem polegał na tym, że porty 8005 i 8009 były zajęte, jednak port 8080 był wolny i w tym czasie nie była uruchomiona instalacja tomcat. Twoje rozwiązanie pomogło mi rozwiązać ten problem, dzięki.
Benas,

7

Co zrobiłem po przeczytaniu wszystkich sugerowanych odpowiedzi i jak wiem, mój port był już w użyciu. Dwukrotnie kliknąłem Tomcat w zakładce Serwery w Zaćmieniu. Otworzyłem informacje ogólne, a następnie znalazłem informacje o porcie. Właśnie zmieniłem port powodujący konflikt, ponieważ mój był portem 8009 (błąd wspomniany podczas uruchamiania serwera). Zmieniłem go na 8008 i działa dobrze. Spróbuj, jeśli zmieniony port nie będzie używany, serwer się uruchomi.


6

Krok 1: netstat -a -o -n spowoduje wyświetlenie listy sieci, poszukiwanie lokalnego adresu, takiego jak 127.0.0.1:8080 i zanotowanie PID (eq 3624)

C:\>netstat -a -o -n

Krok 2: Taskkill / F / PID 3624 . Uruchom to polecenie, aby zabić ten proces.

C:\>taskkill /F /PID 3624

link do wpisu


Zobacz moją nową odpowiedź, w której dołączam skrypt PowerShell do automatyzacji tych dwóch wierszy.
Xharlie

5

W systemie Windows użyj polecenia do zatrzymania już uruchomionej instancji tomcat i spróbuj uruchomić ją ponownie w środowisku Eclipse, może działać.

net stop tomcat7 

Lub możesz zmienić port w kodzie XML serwera, jeśli chcesz uruchomić na innych portach.


4

Prosty sposób na rozwiązanie problemu:

Serwer może już działać w innym procesie lub proces systemowy może korzystać z portu. Aby zabić ten port, wykonaj następujące czynności:

1) Pobierz TCPView (tylko 285kb) z następującego linku.

http://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

2) Wyodrębnij folder i uruchom aplikację TCPView .

3) Kliknij prawym przyciskiem myszy na java.exe (bo 8009,8005 porty są powszechnie używane przez proces Java) i wybierz Zakończ proces opcji.

to z łatwością zatrzymałoby kolejny proces.

UWAGA : Uruchomienie TOMCATPATH ​​/ bin / shutdown.bat może nie zamknąć Tomcat, gdy zawiera on demon lub niezarządzane wątki. W takich przypadkach TCPView działa poprawnie bez żadnych problemów.


2

Jeśli jesteś w środowisku Java EE prospektywnym w środowisku Eclipse i próbujesz uruchomić serwer Tomcat w środowisku Eclipse w trybie debugowania, otrzymasz takie błędy. Musisz przełączyć się na potencjalny debugowanie w Eclipse. Tak rozwiązałem mój problem.


2

Czasami, jeśli porty nie zostaną zwolnione nawet po próbie zamknięcia systemu. Niezależnie od sugestii @BalusC, możesz zabić proces javaw. Wykonaj następujące czynności:

  1. Kliknij menu Start i otwórz „Windows PowerShell”
  2. Kliknij prawym przyciskiem myszy przed otwarciem i wybierz „Uruchom jako administrator”
  3. Wpisz polecenie ps. Możesz zobaczyć obraz w następujący sposób: Powershell pokazujący bieżące wady

  4. Zobacz numer procesu „javaw”. Numer procesu jest liczbą najbardziej po prawej stronie w kolumnach, na przykład podświetliłem na obrazie numer procesu javaw.

  5. Wpisz polecenie kill. javaw został zabity i teraz musisz mieć możliwość uruchomienia programu.


1
Zobacz moją nową odpowiedź, w której dołączam skrypt PowerShell, aby to zautomatyzować.
Xharlie

2

Oto jeszcze jedna opcja do wypróbowania, jeśli żaden z powyższych wysiłków nie pomógł. Być może korzystasz z Eclipse ze wspólnego dysku (na przykład H :) . Jeśli tak, przenieś / skopiuj cały katalog Eclipse do C: i spróbuj ponownie.

Moje Eclipse nie mogło otworzyć portów dla serwera Tomcat (z powyższym błędem), ani nawet połączyć się z Internetem. Próbowałem też innej wtyczki Tomcat (Sysdeo), która również nie otworzyła portów.

Oto opcje, które wypróbowałem:

Sprawdź i zabij inne wystąpienia Tomcat

  • W wierszu polecenia netstat -anoi sprawdź, czy inne procesy używają portów będących w konflikcie.
  • Znajdź PID i zabij go
  • Spróbuj ponownie uruchomić serwer.

Zmień porty Tomcat w Eclipse

  • Na karcie Serwer Eclipse kliknij dwukrotnie instancję Tomcat. Spowoduje to otwarcie karty konfiguracji.
  • W obszarze Porty zmień numery portów. (na przykład 18080).

Zabij java.exe i javaw

Zobacz moją drugą odpowiedź dotyczącą braku połączenia Eclipse z Internetem ( https://stackoverflow.com/a/37246087/4212710 ).


2

Dla użytkowników systemu Windows:

Przejdź bezpośrednio do Menedżera zadań za pomocą kombinacji klawiszy CTRL + SHIFT + ESC.

Zabij procesy „java.exe”, klikając prawym przyciskiem myszy i wybierając „Zakończ zadanie”.


2

Sprawdziłem wszystkie odpowiedzi, ale informing only to kill PID.

W przypadku, gdy wszyscy mają dostęp do terminala, to nie pomoże, a może nie masz pozwolenia na zabicie PID .

W takim przypadku możesz:

Double click on server

Go to Overview and change ports in Ports lubię to:

wprowadź opis zdjęcia tutaj


1

Prostszą poprawką, która działa dla mnie, jest usunięcie moich aktualnie wdrożonych aplikacji internetowych z tomcat poprzez zakładkę „Serwer”. Po ich usunięciu problem zniknie. Wystarczy ponownie wdrożyć projekt, uruchamiając polecenie Uruchom jako> Uruchom na serwerze.


1

Problem często pojawia się, gdy Apache Tomcat nie kończy się poprawnie, nawet jeśli wysłano instrukcję zamknięcia. W moim przypadku przy użyciu Tomcat 8 dzieje się to z irytującą regularnością. Na szczęście możesz użyć programu Windows PowerShell i netstatpolecenia, aby utworzyć prosty skrypt, aby zabić proces.

Poniższy skrypt programu PowerShell przeanalizuje dane wyjściowe, netstataby znaleźć proces nasłuchujący 127.0.0.1:8005, wyodrębnić jego identyfikator PID, a następnie zabić ten proces:

netstat -a -o -n `
 | select -skip 4 `
 | % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} `
 | ? {$_.Fields[1] -match '127\.0\.0\.1\:8005$'} `
 | % {Write-Host "Killing PID" $_.Fields[4] "..."; taskkill /F /PID $_.Fields[4] }

Jeśli server.xmlkonfigurujesz Tomcat do używania innego portu lub adresu IP, odpowiednio zmodyfikuj wyrażenie regularne w czwartym wierszu skryptu.

Na koniec powinienem zauważyć, że sytuacja jest lepsza w systemie Linux, ponieważ możesz poinstruować Tomcat, aby zapisał swój PID w pliku podczas uruchamiania i użył przełącznika, aby wymusić zamknięcie, później - skrypt zamykania dla systemów 'nix już zawiera umiejętność zabicia procesu i praca z tandetą netstatnie jest wymagana.


1

Jeśli powyższy problem występuje w systemie operacyjnym Windows 7 lub 10, problem występuje, ponieważ Tomcat działa jako usługa systemu Windows. Aby zatrzymać Tomcat jako usługi Windows, otwórz Panel sterowania Windows. Znajdź usługę „Apache Tomcat” i zatrzymaj ją. Innym sposobem jest zabicie procesu działającego na porcie 8080 przy użyciu cmd.

Otwórz cmd, uruchamiając go jako administrator.

  1. C: \ users \ nazwa użytkownika> netstat -o -n -a | findstr 0.0: 8080
  2. TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 2160.
  3. Powyższy 2160 jest identyfikatorem procesu działającego na porcie 8080 i zabij ten proces za pomocą następującego polecenia
    C: \ users \ nazwa użytkownika> taskkill / F / PID 2160
  4. Przejdź do IDE i uruchom Serwer, będzie działać

1

Przyczyną może być nieprawidłowe zatrzymywanie usługi tomcat. Aby to zrobić, otwórz menedżera zadań, tam możesz zobaczyć javaw.exeusługę. Najpierw zatrzymaj tę usługę. Teraz uruchom ponownie kocura, działa dobrze.


1

W moim przypadku pojawił się błąd: Port 8005 wymagany przez serwer Tomcat v8.0 na localhost jest już w użyciu

Zmieniłem port 8005 w apache-tomcat-8.0.39 \ conf \ server.xml, ale zmiany nie zostały odzwierciedlone. Potem zrobiłem te zmiany od zaćmienia. klikając dwukrotnie serwer i modyfikując port z 8005 na 8006 i działa. wprowadź opis zdjęcia tutaj

Przed umieszczeniem 8006 sprawdziłem w powłoce systemu Windows, czy ten port jest dostępny, czy nie. Wykonując następujące polecenie:

netstat -a -o -n | findstr 8006

1

Mam ten sam problem i po wyszukaniu odpowiedzi, jak pokazano poniżej: 1. otwórz Monitor Tomcat, jak pokazano poniżej: wprowadź opis zdjęcia tutaj

  1. Po prostu naciśnij przycisk Stop, jak pokazano na poniższym obrazku:

wprowadź opis zdjęcia tutaj

Wreszcie działa ze mną po wielu próbach i sugerowanych rozwiązaniach.

Z pozdrowieniami, Kerelos Michaił


0

Na Eclipse wykonaj surowe usunięcie folderu konfiguracji Tomcat w ramach projektu „Serwery”. Wypróbowałem to jako ostatnią nadzieję i zadziałało.


0

W przypadku systemu Windows doświadczyłem nowych rzeczy ... zatrzymanie tomcat z folderu / bin nie spowoduje natychmiastowego zwolnienia portu 8080. Uwolnienie portu zajmuje około 5-10 minut. Po 10 minutach ponownie, jeśli spróbuję uruchomić mój projekt Uruchom-> Uruchom na serwerze .. pozwala to uruchomić.

Nie jestem pewien, czy moje rozumowanie jest prawidłowe!


0

Zapoznaj się z poniższym blogiem „jak zabić tomcat bez konieczności ponownego uruchamiania komputera”

http://stanicblog.blogspot.fr/2012/01/how-to-kill-apache-tomcat-without.html

Mam nadzieję, że to pomoże komuś w przyszłości.


1
Powyższy link jest martwy. Ten wskazuje na dobry artykuł na blogu: stanicblog.blogspot.fr/2012/01/…
dounyy

Nie dodawaj linków do przeczytania bez wspominania o ważnej części. Ponieważ ludzie są tutaj, otrzymają odpowiedzi.
Menuka Ishan

0

Występuje, gdy inni w projekcie również używają tych samych numerów portów, co Ty! kliknij dwukrotnie serwer tomcat, zmień numery portów na 8585 lub cokolwiek innego. Kod zacznie teraz działać!


0

Jak zabić usługę Windows za pomocą PID -

  1. otwórz wiersz polecenia i wpisz netstat -ano
  2. znajdź PID używanych portów, w tym przypadku będzie to 8080, 8005,8009. Powiedzmy, że PID tych portów to 5760.
  3. Teraz wpisz taskkill /f /pid 5760
  4. zamknie PID i porty będą dostępne do użycia. Teraz możesz normalnie uruchomić tomcat za pomocą usług Windows lub samego zaćmienia.

Dzięki

zabij usługę Windows, która utknęła podczas zatrzymywania lub uruchamiania


0

Kilka portów (8005, 8080, 8009) wymaganych przez serwer Tomcat vX.X na serwerze lokalnym jest już używanych

Aby sprawdzić, czy inna instancja Tomcat jest już uruchomiona lub jakiś inny proces korzysta z portów, których możesz użyć:

netstat -b -aw wierszu polecenia systemu Windows. Wyświetla listę używanych portów i udostępnia plik wykonywalny, który używa każdego z nich. Aby to zrobić, musisz należeć do grupy administratorów.

Możesz dostać coś takiego:

TCP 192.168.0.1:8009 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8080 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8005 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

Otwórz menedżera zadań Ctrl+ Shift+ Esci zabij Tomcat7.exelub dowolny inny proces korzystający z tych portów.


Zobacz moją nową odpowiedź, w której dołączam skrypt PowerShell, aby to zautomatyzować.
Xharlie

0

Twój Tomcat prawdopodobnie już działa. Właśnie dlatego masz błąd. Miałem wcześniej ten sam problem. Rozwiązałem to bardzo prosto:

  1. Zrestartuj swój komputer
  2. Otwórz Eclipse
  3. Uruchom swojego Tomcata

To wszystko.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.