Кілька портів (8005, 8080, 8009), необхідних Tomcat Server у localhost, вже використовуються


258

Я отримую таку помилку, коли намагаюся запустити просту програму JSP на Tomcat в Eclipse.

Кілька портів (8005, 8080, 8009), необхідних Tomcat v6.0 Server у localhost, вже використовуються. Сервер, можливо, вже працює в іншому процесі, або системний процес може використовувати порт. Щоб запустити цей сервер, вам потрібно буде зупинити інший процес або змінити номер (и) порту.

Як це спричинено і як це можна вирішити?


У мене була подібна проблема, яка виявилася брандмауером Windows.
Джеймс Оравець

Ймовірно, якийсь нежить може зберегти твій маточник живим. знищити процес, знайшовши його ідентифікатор та припинивши його, або перезавантаживши машину.
Феліпе Лео

Ви можете використовувати ці команди, щоб зупинити послуги tomcat, які вже працюють з командної консолі. netstat -ano | findStr 8080щоб знайти запущені служби, а потім знайти ідентифікатор процесу та скопіювати pid та запустити команду знову якtaskkill /F /PID pid_number
Mdhar9e

Відповіді:


473

У вас є ще один екземпляр Tomcat. Ви можете підтвердити це, перейшовши http://localhost:8080у свій веб-браузер і перевірте, чи є у вас домашня сторінка за замовчуванням Tomcat або сторінка помилки 404 для конкретних Tomcat. Обидва є однаково вагомими доказами того, що Tomcat працює добре; якби цього не сталося, ви отримали б повідомлення про помилку очікування HTTP-з'єднання, пов’язане з браузером.

Вам потрібно відключити його. Перейдіть до /binпідпапки папки встановлення Tomcat та виконайте сценарій shutdown.bat(Windows) або shutdown.sh(Unix). Якщо даремно, закрийте Eclipse, а потім відкрийте диспетчер завдань і вбийте всі javaта / або javawпроцеси.

Або якщо ви фактично встановили його як службу Windows з якихось причин (це призначено для виробництва, і це не допомагає, коли ви лише розвиваєтеся), відкрийте диспетчер сервісів ( Пуск> Запуск> services.msc ) і зупиніть службу Tomcat. Якщо необхідно, видаліть службу Windows взагалі. Для розробки достатньо лише ZIP-файлу.

Або якщо ваш фактичний намір полягає в тому, щоб запустити два екземпляри Tomcat одночасно, тоді вам доведеться налаштувати другий екземпляр для прослуховування в різних портах. Для отримання більш детальної інформації зверніться до документації Tomcat.


1
ідеально, це мене мучить назавжди. Я виконав його як sh shutdown.shу терміналі в каталозі / bin.
Danny Englander

2
Привіт, BalusC, мені подобається! У shutdown.batмоїй папці бін немає. Tomcat встановлювався як сервіс, а не як блискавка. Припинення послуги tomcat в сервісах вирішило проблему. Дякую. Ченкві.
Ерран Морад

1
@Borat: Вітаємо вас. Майте на увазі, що вам справді краще видалити службу та натомість отримати поштовий індекс.
BalusC

6
"вбий усі процеси java та / або javaw" працював на мене, дякую.
Thariq Nugrohotomo

3
Відкриття system monitorабо task managerвбивство Java-процесу, який використовується about 400 MBабо більше RAM, також вирішить проблему. Це несвідомо резервує процес.
гадюка

55
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • не потрібно перезапускати Eclipse
  • якщо ви отримаєте вищезгадану помилку, просто введіть цей рядок у терміналі
  • знову запустити tomcat в Eclipse.
  • працює лише в системі на базі Linux (Ubuntu ..etc)

6
Це кращеkill $(ps -aef | grep java | grep apache | awk '{print $2}')
firesofmay

Це не працює для мене (Монетний двір 17.1). Це просто дає мені допомогу для killкоманди.
Делете

Це працювало для мене. Однак я хотів дізнатися, чи є у мене 2 екземпляри запущених, і мені потрібно змусити зупинити один за допомогою цього методу, як я зрозуміти, яку закрити. Спасибі
Гаутам

29

Якщо ви працюєте у Windows, спробуйте це у командному рядку:

netstat -ano

Це покаже всі використовувані порти та ідентифікатор процесу PID # процесу, який використовує цей порт. Потім Ctrl+ Alt+ Delта відкрийте диспетчер завдань, щоб побачити, який процес це.

Потім ви можете або закрити / зупинити його, або налаштувати сервер на інший порт. Щоб перевірити, чи доступний новий обраний порт (скажімо, 8010), зробіть це:

netstat -ano | grep 8010

Якщо він не повертає жодних рядків, то ви все добре.

Щоб змінити порт, перейдіть до подання Сервер, відкрийте server.xml та змініть порт. Міна має цей запис:

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

Перегляньте мою нову відповідь, в якій я включаю скрипт PowerShell, щоб автоматизувати це, не вимагаючи від вас відкривати диспетчер завдань.
Xharlie

1
findstrдля тих, хто не має грепу.
eckes

25

Якщо ви перебуваєте на mac середовищі, ось що я зробив.

Знайдіть ідентифікатор процесу, що працює на цьому порту з терміналу, наприклад, 8080:

lsof -i :8080

і вбийте його:

kill -9 <PID>  

Приклад:

Можливо, ви побачите такий результат:

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)

і вбийте: ( kill -9 21347)


20

Кроки до вільного порту, який вже використовується для запуску tomcat-сервера в Eclipse

Наприклад, припустимо, що використовується порт 8080, нам потрібно зробити безкоштовний 8080 для запуску tomcat

Крок 1:

C: \ Користувачі \ ім'я користувача> netstat -o -n -a | findstr 0,0: 8080

TCP 0.0.0.0:3000 0.0.0.0grees LISTENING 3116

Тепер ми бачимо, що LISTENING-порт - 3116 для 8080,

Нам потрібно вбити 3116 зараз

Крок 2: -

C: \ Користувачі \ ім'я користувача> taskkill / F / PID 3116

Крок 3: Перейдіть до Eclipse і запустіть Server, він запуститься


14

Якщо ви використовуєте Eclipse, то двічі клацніть по серверах і двічі клацніть на сервері tomcat, тоді один файл відкриється. У цьому файлі змініть HTTP-порт на інший номер порту і збережіть ( Ctrl+ S), а потім знову запустіть сервер.


Це працювало для мене, поки інших рішень не було. Я використовую Монету 17.1. Мені довелося встановити tomcat як через Eclipse, так і через apt-get, тому що я не міг знайти папку, де apt-get його встановив. Тож, мабуть, тому я маю двох. І все-таки я не зміг закрити перший із командами kill.
Делете

12

Якщо затьмарення говорить

Кілька портів (8005, 8080, 8009), потрібних Tomcat v6.0 Server у localhost, вже використовуються

Ця помилка виникає через те, що tomcat може працювати у фоновому режимі, тому спочатку зупиніть цей сервер. Дотримуйтесь нижче деталей.

Рішення таке:

  1. Відкрийте подання "консоль" (вікно-> показати перегляд-> консоль)
  2. Потім зупиніть сервер tomcat.
  3. Потім відкрийте подання "сервер" і запустіть сервер, на якому він буде працювати.

Дякую!


Це працювало для мене. Я лише спробував: sudo service tomcat stop
Emiliano Sangoi

10

У мене немає жодного примірника запуску реклами Tomcat, жодного іншого процесу, що використовує "порт Tomcat" (у моєму випадку - порт 8088). Eclipse надсилає те саме повідомлення при запуску Tomcat:

.... Сервер вже може працювати в іншому процесі, або системний процес може використовувати порт. Щоб запустити цей сервер, вам потрібно буде зупинити інший процес або змінити номер (и) порту.

Я вирішую проблему таким чином:

  • підкажіть у смітник
  • запуск startup.bat
  • запуск shutdown.bat
  • запустити tomcat від Eclipse

1
Моя проблема полягала в тому, що 8005 і 8009 порти були зайняті, однак 8080 порт був вільним і в той час не працювала установка tomcat. Ваше рішення допомогло мені виправити це питання, дякую.
Бенас

7

Що я зробив, прочитавши всю запропоновану відповідь, і, як я знаю, мій порт уже використовувався. Я двічі клацнув на Tomcat на вкладці Сервери у затемненні, і він відкрив огляд інформації, а потім знайшов інформацію про порт. Щойно змінений конфліктний порт, оскільки мій був портом 8009 (помилка, зазначена під час запуску сервера). Я змінив його на 8008, і він працює чудово. Спробуйте, якщо змінений порт не буде використаний, почнеться сервер.


6

Крок 1: netstat -a -o -n, і він відобразить мережевий список, знайдіть локальну адресу на зразок 127.0.0.1:8080 та відзначте PID (eq 3624)

C:\>netstat -a -o -n

Крок 2: завдання завдання / F / PID 3624 . Виконайте цю команду, щоб знищити цей процес.

C:\>taskkill /F /PID 3624

посилання на пост


Перегляньте мою нову відповідь, в якій я включаю скрипт PowerShell для автоматизації цих двох рядків.
Xharlie

5

У Windows використовувати команду для зупинки вже запущеного екземпляра tomcat та спробувати запустити його ще раз у затемненні, це може працювати.

net stop tomcat7 

Або ви можете змінити порт у XML сервера, якщо ви просто хочете запускатись на деяких інших портах.


4

Простий спосіб вирішити вашу проблему:

Сервер, можливо, вже працює в іншому процесі, або системний процес може використовувати порт. Щоб убити цей порт, виконайте наступне:

1) Завантажте TCPView (всього 285 Кб) з наступного посилання.

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

2) Витягніть папку та запустіть програму TCPView .

3) Клацніть правою кнопкою миші на java.exe (оскільки 8009 8005 порти зазвичай використовуються в Java-процесі) та виберіть пункт « Завершити процес» .

це легко зупинить інший процес ..

ПРИМІТКА : Запуск TOMCATPATH ​​/ bin / shutdown.bat не може вимкнути Tomcat, якщо він містить деякі демонстраційні або некеровані потоки. У таких випадках TCPView працює без проблем.


2

Якщо ви перебуваєте в програмі Eclipse, яка потенційно працює на Java EE і намагається запустити сервер Tomcat в Eclipse в режимі налагодження, ви отримаєте такі помилки. Ви повинні переключитися на налагодження потенційного в Eclipse. Я вирішив свою проблему так.


2

Іноді, якщо порти не звільнені навіть після спроби shutdown.bat, що запропонував @BalusC, ви можете вбити процес javaw. Виконайте наступні дії:

  1. Клацніть на меню "Пуск" і відкрийте "Панель повноважень Windows"
  2. Клацніть правою кнопкою миші перед відкриттям та виберіть "Запустити як адміністратор"
  3. Введіть команду ps. Ви можете побачити зображення таким чином: Powershell показує поточні пробіги, що працюють

  4. Дивіться номер процесу "javaw". Номер процесу - це найправіше число в стовпцях, я виділив, наприклад, номер процесу зображення javaw.

  5. Введіть команду kill. javaw вбито, і тепер ви повинні мати можливість запускати програму.


1
Будь ласка, дивіться мою нову відповідь, в якій я включаю сценарій PowerShell для автоматизації цього.
Xharlie

2

Ось ще один варіант спробувати, якщо жодне з вищезазначених зусиль не допомогло. Можливо, ви використовуєте Eclipse із спільного диска (наприклад, H :) . Якщо це так, перемістіть / скопіюйте весь каталог Eclipse в C: і повторіть спробу.

Мій Eclipse не зміг відкрити порти для сервера Tomcat (з вказаною вище помилкою), а також не підключитися до Інтернету. Я також спробував інший плагін Tomcat (Sysdeo), який також не зміг відкрити порти.

Ось такі варіанти я спробував:

Перевірте та вбийте інші екземпляри Tomcat

  • У командному рядку netstat -anoі перевірте, чи використовуються які-небудь інші процеси, що конфліктують порти.
  • Знайдіть ПІД і вбийте його
  • Спробуйте запустити сервер ще раз.

Змінення портів Tomcat в Eclipse

  • На вкладці Eclipse Server двічі клацніть екземпляр Tomcat. Це відкриє вкладку конфігурації.
  • У розділі Порти змініть номери портів. (наприклад, 18080).

Убити java.exe і javaw

Дивіться іншу відповідь на те, що Eclipse не підключається до Інтернету ( https://stackoverflow.com/a/37246087/4212710 ).


2

Для користувачів Windows:

Перейдіть безпосередньо до диспетчера завдань за допомогою комбінації клавіш CTRL + SHIFT + ESC.

Вбийте процеси "java.exe", клацнувши правою кнопкою миші та вибравши "Закінчити завдання".


2

Я перевірив усі відповіді, але informing only to kill PID.

У випадку, якщо у вас є доступ до терміналу, яким всі спільні, це не допоможе або, можливо, у вас немає дозволу на вбивство PID .

У цьому випадку ви можете:

Double click on server

Go to Overview and change ports in Ports подобається це:

введіть тут опис зображення


1

Більш просте виправлення, яке працює для мене, - це видалення моїх поточних розгорнутих веб-сайтів з tomcat через вкладку «Сервер». Як тільки я їх видалю, проблема зникає. Просто повторно розгорніть проект, перейшовши на Запуск як> Запустити на сервері.


1

Проблема часто виникає, коли Apache Tomcat не вдається завершити належним чином, навіть незважаючи на те, що було надіслано інструкцію щодо закриття. У моєму випадку, використовуючи Tomcat 8, це відбувається з дратівливою регулярністю. На щастя, ви можете використовувати Windows PowerShell та netstatкоманду для створення простого сценарію, щоб вбити процес.

Наступний скрипт PowerShell проаналізує вихідний файл, netstatщоб знайти будь-який процес, який слухається 127.0.0.1:8005, витягнути його PID та знищити цей процес:

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] }

Якщо ваш server.xmlконфігурація Tomcat використовувати інший порт або IP, відредагуйте регулярний вираз у четвертому рядку сценарію відповідно.

Нарешті, я повинен зазначити, що ситуація краща в Linux, оскільки ви можете доручити Tomcat зберігати свій PID у файл під час запуску та використовувати перемикач для примусового завершення роботи, пізніше - сценарій відключення для 'nix систем вже має здатність вбивати процес і роботу з сліту netstatне вимагається.


1

Якщо вищезазначена проблема виникає в ОС Windows 7 або 10, проблема виникає через те, що Tomcat працює як служба Windows. Щоб зупинити роботу Tomcat як служб Windows, відкрийте Панель керування Windows. Знайдіть послугу «Apache Tomcat» і зупиніть її. Інший спосіб - вбити процес, запущений на порт 8080, використовуючи cmd.

Відкрийте cmd, виконуючи його як адміністратор.

  1. C: \ users \ username> netstat -o -n -a | findstr 0,0: 8080
  2. TCP 0.0.0.0:8080 0.0.0.0grees LISTENING 2160.
  3. Вищевказаний 2160 - це ідентифікатор процесу, що працює на порту 8080, і вбиває цей процес, використовуючи таку команду
    C: \ users \ username> taskkill / F / PID 2160
  4. Перейдіть до IDE і запустіть Server, він запуститься

1

Це може бути тому, що ви не припиняєте належним чином службу Tomcat. Для цього відкрийте диспетчер завдань і там ви зможете побачити javaw.exeслужбу. Спочатку припиніть цю послугу. Тепер перезапустіть ваш tomcat, він прекрасно працює.


1

У моєму випадку вона давала мені помилку: порт 8005, необхідний Tomcat v8.0 Server у localhost, вже використовується

Я змінив порт 8005 в apache-tomcat-8.0.39 \ conf \ server.xml, але зміни не відображалися. Тоді я зробив ці зміни від затемнення. подвійним клацанням сервера та зміною порту з 8005 на 8006, і він працює. введіть тут опис зображення

Перед тим, як ставити 8006, я перевірив оболонку Windows, чи є цей порт чи ні. Виконуючи таку команду:

netstat -a -o -n | findstr 8006

1

Я зіткнувся з тією ж проблемою і після пошуку відповіді, як показано нижче: 1. відкрийте Monitor Tomcat, як показано нижче: введіть тут опис зображення

  1. Просто натисніть стоп, як показано на малюнку нижче:

введіть тут опис зображення

Нарешті, він працює зі мною після багатьох випробувань та запропонованих рішень.

З повагою, Керелос Михайло


0

На Eclipse зробіть необроблене видалення папки конфігурації Tomcat в рамках проекту "Сервери". Я спробував це як останню надію, і це спрацювало.


0

У випадку з Windows, у мене з’явився новий матеріал ... зупинка tomcat з / bin папки негайно не випустить порт 8080. Щоб звільнити порт, потрібно 5-10 хвилин. Через 10 хвилин знову, якщо я спробую запустити мій проект Run-> Run on server .. це дозволяє запустити.

Я не впевнений, чи правильно я розумію!


0

Дивіться наступний блог "як вбити tomcat без необхідності перезавантажувати комп'ютер"

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

Сподіваюся, це допоможе комусь у майбутньому.


1
Посилання вище мертве. Це вказує на хорошу статтю в блозі: stanicblog.blogspot.fr/2012/01/…
dounyy

Будь ласка, не додайте посилання для читання, не згадуючи важливу частину. Тому що тут люди отримують відповіді.
Менюка Ішан

0

Це відбувається, коли інші в проекті також використовують ті ж номери портів, що і ви! двічі клацніть сервер tomcat, змініть номери портів на 8585 або що завгодно. Код тепер почне працювати!


0

Як вбити службу Windows за допомогою PID -

  1. відкрити командний рядок і ввести netstat -ano
  2. Знайдіть PID портів, які використовуються, в цьому випадку це буде 8080, 8005,8009. Скажімо, PID цих портів становить 5760.
  3. Тепер введіть taskkill /f /pid 5760
  4. він закриє PID, і порти будуть доступні для використання. Тепер ви можете запустити tomcat як звичайно службами Windows або самим затемненням.

Дякую

вбити службу Windows, яка застрягла при зупинці або запуску


0

Кілька портів (8005, 8080, 8009), потрібних Tomcat vX.X Server у localhost, вже використовуються

Щоб перевірити, чи використовується інший екземпляр Tomcat або якийсь інший процес, використовуйте порти, які ви можете використовувати:

netstat -b -aв командному рядку для Windows. У цьому списку використовуються порти, що використовуються, і ви отримуєте виконаний файл, який використовує кожен. Для цього вам потрібно бути в групі адміністратора.

Ви можете отримати щось подібне:

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]

Відкрийте диспетчер завдань Ctrl+ Shift+ Escта вбийте Tomcat7.exeбудь-який інший процес за допомогою цих портів.


Будь ласка, дивіться мою нову відповідь, в якій я включаю сценарій PowerShell для автоматизації цього.
Xharlie

0

Ваш Tomcat, ймовірно, вже працює. Ось чому ви отримали помилку. У мене були ті ж проблеми і раніше. Я вирішив це дуже просто:

  1. Перезавантажте комп'ютер
  2. Відкрите затемнення
  3. Запустіть свій Tomcat

Це все.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.