Несколько портов (8005, 8080, 8009), необходимых для сервера Tomcat на локальном хосте, уже используются


258

Я получаю следующую ошибку при попытке запустить простую программу JSP на Tomcat в Eclipse.

Несколько портов (8005, 8080, 8009), необходимых для сервера Tomcat v6.0 на локальном хосте, уже используются. Возможно, сервер уже запущен в другом процессе, или системный процесс может использовать порт. Чтобы запустить этот сервер, вам нужно будет остановить другой процесс или изменить номер (а) порта.

Как это вызвано и как я могу решить это?


У меня была похожая проблема, которая оказалась брандмауэром 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.
Дэнни Энгландер

2
Привет BalusC, ты мне нравишься! Нет shutdown.batв моей папке bin. Tomcat был установлен как сервис, а не как почтовый индекс. Остановка службы tomcat в сервисах устранила проблему. Спасибо. Chenqui.
Эрран Морад

1
@Borat: пожалуйста. Имейте в виду, что вам действительно лучше удалить службу и вместо этого получить почтовый индекс.
BalusC

6
«Убить все Java и / или Javaw процессы» работал для меня, спасибо.
Тарик Нугрохотомо

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

55
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • нет необходимости перезапускать Eclipse
  • если вы получили ошибку выше, просто введите эту строку в терминале
  • снова запустите кота в Eclipse.
  • работает только в системе на основе Linux (Ubuntu ..etc)

6
Это лучшеkill $(ps -aef | grep java | grep apache | awk '{print $2}')
firesofmay

Это не работает для меня (монетный двор 17.1). Это просто дает мне помощь для killкоманды.
Deleet

Это сработало для меня. Однако я хотел знать, если у меня работает 2 экземпляра, и мне нужно принудительно остановить один из них, используя этот метод, как мне определить, какие из них закрыть. Спасибо
Гаутам

29

Если вы работаете в Windows, попробуйте это в командной строке:

netstat -ano

Это покажет все используемые порты и идентификатор процесса PID # процесса, который использует этот порт. Затем Ctrl+ Alt+ Delи откройте диспетчер задач, чтобы увидеть, что это за процесс.

Затем вы можете выбрать либо закрыть / остановить его, либо настроить свой сервер на использование другого порта. Чтобы проверить, доступен ли новый выбранный порт (скажем, 8010):

netstat -ano | grep 8010

Если он не возвращает никаких строк, то все в порядке.

Чтобы изменить порт, перейдите в представление Server, откройте server.xml и измените порт там. У меня есть эта запись:

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

Пожалуйста, смотрите мой новый ответ, в котором я включаю сценарий PowerShell, чтобы автоматизировать это, не требуя, чтобы вы открывали диспетчер задач.
Ксарли

1
findstrдля тех без grep.
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: \ Users \ имя пользователя> netstat -o -n -a | findstr 0.0: 8080

TCP 0.0.0.0:3000 0.0.0.0:0 СЛУШАТЬ 3116

Теперь мы видим, что LISTENING порт 3116 для 8080,

Нам нужно убить 3116 сейчас

Шаг 2:-

C: \ Users \ имя пользователя> taskkill / F / PID 3116

Шаг 3: Зайдите в Eclipse и запустите сервер, он запустится


14

Если вы используете Eclipse, дважды щелкните по серверам и дважды щелкните по серверу Tomcat, после чего откроется один файл. В этом файле измените HTTP-порт на другой номер порта и сохраните ( Ctrl+ S), затем снова запустите сервер.


Это сработало для меня, в то время как другие решения не сработали. Я использую Mint 17.1. Мне пришлось установить tomcat как через Eclipse, так и через apt-get, потому что я не смог найти папку, в которую установил apt-get. По-видимому, поэтому у меня их два. Тем не менее я не смог закрыть первый с помощью команд kill.
Deleet

12

Если Затмение говорит

Несколько портов (8005, 8080, 8009), необходимых для сервера Tomcat v6.0 на локальном хосте, уже используются

Эта ошибка возникает из-за того, что tomcat может работать в фоновом режиме, поэтому сначала остановите этот сервер. Следуйте приведенным ниже сведениям.

Решение:

  1. Откройте представление «Консоль» (окно-> Показать представление-> Консоль)
  2. Затем остановите сервер Tomcat.
  3. Затем откройте представление «сервер» и запустите сервер, он будет работать.

Спасибо!


Это сработало для меня. Я только попробовал: остановка службы кота sudo
Эмилиано Сангой

10

У меня нет другого экземпляра Tomcat, запущенного без какого-либо другого процесса, использующего «порт Tomcat» (в моем случае, порт 8088). Eclipse отправляет то же сообщение при запуске Tomcat:

.... Возможно, сервер уже запущен в другом процессе, или системный процесс может использовать порт. Чтобы запустить этот сервер, вам нужно будет остановить другой процесс или изменить номер (а) порта.

Я решаю проблему следующим образом:

  • перейдите в мусорное ведро по подсказке
  • запустите startup.bat
  • запустить shutdown.bat
  • начать кот по Eclipse

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

7

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


6

Шаг 1: netstat -a -o -n, и он выведет список сетей, ищет локальный адрес, например 127.0.0.1:8080, и запоминает PID (eq 3624)

C:\>netstat -a -o -n

Шаг 2: Taskkill / F / PID 3624 . Запустите эту команду, чтобы убить этот процесс.

C:\>taskkill /F /PID 3624

ссылка на пост


Пожалуйста, смотрите мой новый ответ, в котором я включаю сценарий PowerShell для автоматизации этих двух строк.
Ксарли

5

В Windows используйте команду для остановки уже запущенного экземпляра tomcat и попробуйте запустить его снова в eclipse, это может сработать.

net stop tomcat7 

Или вы можете изменить порт в XML-файле сервера, если вы просто хотите работать на некоторых других портах.


4

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

Возможно, сервер уже запущен в другом процессе, или системный процесс может использовать порт. Чтобы убить этот порт, сделайте следующее:

1) Скачать TCPView (только 285kb) по следующей ссылке.

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

2) Извлеките папку и запустите приложение TCPView .

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

это легко остановит другой процесс ..

ПРИМЕЧАНИЕ . Запуск TOMCATPATH ​​/ bin / shutdown.bat может не завершить работу Tomcat, если он содержит некоторые демоны или неуправляемые потоки. В таких случаях TCPView работает без проблем.


2

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


2

Иногда, если порты не освобождаются даже после попытки shutdown.bat, которую предложил @BalusC, вы можете прервать процесс javaw. Выполните следующие шаги:

  1. Нажмите на меню «Пуск» и откройте «Windows PowerShell»
  2. Щелкните правой кнопкой мыши перед открытием и выберите «Запуск от имени администратора»
  3. Введите команду PS. Вы можете увидеть изображение следующим образом: Powershell показывает текущие процессы

  4. См. Номер процесса "javaw". Номер процесса - это самый правый номер в столбцах, я выделил в изображении номер процесса javaw, например.

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


1
Пожалуйста, смотрите мой новый ответ, в котором я включаю сценарий PowerShell для автоматизации этого.
Ксарли

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.xmlTomcat настраивает использование другого порта или 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.0:0 СЛУШАТЬ 2160.
  3. Вышеуказанный 2160 является идентификатором процесса, выполняющегося на порте 8080, и завершает этот процесс с помощью следующей команды
    C: \ users \ username> taskkill / F / PID 2160
  4. Зайдите в IDE и запустите сервер, он запустится

1

Это может быть из-за того, что вы неправильно останавливаете службу tomcat. Для этого откройте диспетчер задач, там вы сможете увидеть javaw.exeсервис. Сначала остановите эту услугу. Теперь перезагрузите ваш кот, он работает нормально.


1

В моем случае это выдавало ошибку: порт 8005, необходимый серверу Tomcat v8.0 на локальном хосте, уже используется

Я изменил порт 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 на локальном хосте, уже используются

Чтобы проверить, использует ли другой экземпляр 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 для автоматизации этого.
Ксарли

0

Ваш Tomcat, вероятно, уже запущен. Вот почему у вас есть ошибка. У меня была такая же проблема раньше. Я решил это очень просто:

  1. Перезагрузите компьютер
  2. Открытое Затмение
  3. Запустите свой Tomcat

Вот и все.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.