it-roy-ru.com

При попытке повторного развертывания проекта из Spring Tool Suite порт 8080 уже возник. IDE

У меня странная вещь, когда я пытаюсь изменить проект Spring в моем Spring Tool Suite. При первой загрузке (развертывании) все в порядке, приложение компилируется и запускается на localhost: 8080 

Когда я изменяю что-то внутри кода и пытаюсь повторно развернуть его (Запустить это снова - Run As Spring Boot App), я получаю сообщение об ошибке

*************************** Приложение не удалось запустить


Описание:

Соединитель Tomcat, настроенный для прослушивания через порт 8080, не смог Начните. Возможно, порт уже используется или разъем неправильно.

Действие:

Проверьте конфигурацию соединителя, определите и остановите любой процесс прослушивает порт 8080 или настройте приложение на прослушивание в другом порту.

2016-10-19 00: 01: 22.615 INFO 10988 --- [main] ationConfigEmbeddedWebApplicationContext: Закрытие org.springframework.boot[email protected]3023df74: дата запуска [ср. 19 октября 00:01:19 CEST 2016]; корень контекста иерархия 2016-10-19 00: 01: 22.616 INFO 10988 --- [main] o.s.j.e.a.AnnotationMBeanExporter: Отмена регистрации в JMX-экспозиции бобы на отключение

Если я вручную завершаю процесс на этом порту, все снова работает нормально, но это не может быть правильным способом повторного развертывания приложения Spring. Я что-то здесь не так делаю?

Я использую :: Spring Boot :: (v1.4.1.RELEASE)

Постскриптум Я знаю, что могу настроить какой-то механизм горячей замены для автоматической перезагрузки страницы после изменения кода, но сейчас я хотел бы сначала решить эту проблему.

Спасибо за любую помощь или информацию.

22
milan.latinovic

Иногда это происходит, даже когда мы прекращаем запуск процессов в IDE с помощью красной кнопки , мы продолжаем получать ту же ошибку.

Это было решено с помощью следующих шагов,

  1. Проверьте, какие процессы запущены на доступных портах

    netstat -ao |find /i "listening"

    Мы получаем следующее

    TCP 0.0.0.0:7981 machinename:0 LISTENING 2428 TCP 0.0.0.0:7982 machinename:0 LISTENING 2428 TCP 0.0.0.0:8080 machinename:0 LISTENING 12704 TCP 0.0.0.0:8500 machinename:0 LISTENING 2428

    т.е. номера портов и что идентификатор процесса они слушают

  2. Остановите процесс, запущенный на вашем номере порта (в данном случае это 8080, а Process Id равен 12704)

    Taskkill /F /IM 12704 (Примечание: упомяните правильный идентификатор процесса)

Моя проблема была решена с этим, надеюсь, это поможет!

39
rdj7

В моем случае произошла ошибка, так как приложению не удалось получить доступ к хранилищу ключей для ssl.

Запуск приложения от имени пользователя root устранил проблему.

16
Registered User

Вы должны остановить текущий процесс и запустить новый. В Eclipse вы можете нажать эту кнопку, чтобы снова запустить приложение:  enter image description here

15
lukle

Для пользователей Mac (OS X El Capitan): Вам нужно убить порт, на котором работает localhost: 8080 . Для этого вам нужно выполнить две команды в терминале.

Sudo lsof -i tcp: 8080

убить -15 PID 

NB! PID IS НОМЕР, ПРЕДОСТАВЛЯЕМЫЙ ПЕРВОЙ КОМАНДОЙ.

Первая команда даст вам PID для локального хоста: 8080. Замените PID во второй команде на PID, который первая команда дает вам, чтобы завершить процесс, запущенный на localhost: 8080.

10
jsog

Если вы получили какую-либо ошибку на консоли, сказав: «Не удалось запустить встроенный контейнер сервлета. Порт 8080 уже используется ». Затем перейдите в файл application.properties и добавьте это свойство« server.port = 8090 ».

На самом деле порт по умолчанию для весенней загрузки - 8080, если у вас есть что-то еще на этом порту, произойдет вышеуказанная ошибка. Поэтому мы просим весеннюю загрузку запустить на другом порту, добавив «server.port = 8090» в файл application.properties.

7
Hari Tummala

Это типичная ошибка запуска из-за того, что встроенный контейнер сервлета используется порт. 

Не удалось запустить встроенный контейнер Tomcat, поскольку порт 8080 уже используется.

Просто определите и остановите процесс, который прослушивает порт 8080, или настройте (в вас application.properties file) это приложение для прослушивания на другом порту.

7
georges van

Есть два способа решить эту проблему. Сначала попробуйте вариант 1, если он не работает, попробуйте вариант 2, и ваша проблема решена.

1) В правом верхнем углу консоли есть красная кнопка, чтобы остановить приложение весенней загрузки, которое уже запущено на этом порту, просто нажмите на красную кнопку, чтобы завершить работу.

2) Если красная кнопка не активирована, вам нужно щелкнуть правой кнопкой мыши на консоли и выбрать «завершить/отключить все». Надеюсь это поможет.

Дополнительный совет: - Если вы хотите запустить свой сервер на другом порту по вашему выбору, создайте файл с именем application.properties в папке ресурсов вашего проекта maven и напишите server.port = 3000, чтобы запустить приложение на порту 3000

4
Shubham Chopra

Причина в том, что один контейнер сервлета уже запущен на порту 8080, а вы пытаетесь запустить другой на порту 8080.

  1. Проверьте, какие процессы запущены на доступных портах.

  2. Теперь попробуйте перезапустить или остановить приложение .

Перейдите в диспетчер задач и завершите двоичный файл платформы Java (tm)нажмите здесь, чтобы просмотреть изображениеhttps://www.google.com/search?q= + что + + Java (tm) + платформа + se + двоичный файл & oq = что + is + Java (tm) + платформа + se + двоичный файл & aqs = chrome..69i57.26349j1j7 & sourceid = chrome & ie = UTF-8

  1. Перейдите к application.propertie s набор файлов server.port = 0. Это заставит Spring Boot использовать случайный свободный порт при каждом запуске.
3
Thimira Pathirana

Я что-то здесь не так делаю?

Да, вы. Один контейнер сервлета уже запущен на порту 8080, и вы пытаетесь запустить еще один на порту 8080 снова.

Либо перезагрузите сервер (если для этого есть кнопка в STS), либо остановите и запустите

3
so-random-dude

Откройте "localhost: 8080" в своем браузере и посмотрите, что работает на этом порту .... Я сделал это и обнаружил, что Oracle 10g XE работает в фоновом режиме, поэтому я пошел в пуск-> Службы и остановил все службы Oracle. Затем я повторяю mvnw spring-boot:run на IntelliJ, и он работает как по волшебству.

2
samivic

Просто нажмите красную кнопку, чтобы остановить все сервисы в Eclipse, а затем перезапустите приложение как Spring Boot Application - это сработало для меня. 

2
besartm

привет, создание простой строки в application.properties, так как SERVER_PORT = 8090 решил проблему.

2
mohan krishna

На Linux Machine сохраните скрипт bash и выполните его. Если вы хотите освободить порт 8080, введите 8080 при появлении запроса 

echo "Enter port number to be closed :: "
read port
Sudo kill $(Sudo lsof -t -i:$port)
2
singh30

Создайте файл application.properties в папке src/main/resources и запишите содержимое как 

server.port = 8084

Он работает нормально . Но каждый раз перед запуском необходимо сначала остановить приложение, нажав на красную кнопку вверху в IDE .__enter image description here

или попробуйте 

Щелкните правой кнопкой мыши на консоли> нажмите «Завершить»/«Отключить все»

2
yogii

На этом порте в фоновом режиме остались некоторые процессы, некоторые причины могут быть причиной этой проблемы, но вы можете легко решить эту проблему, если завершите процесс, связанный с 8080 или Spring.

Если вы используете Linux, есть шаги, как завершить процесс:

  1. Откройте терминал и введите команду "htop"
  2. нажмите клавишу F3 (это позволит вам искать)
  3. Наберите "8080", если не было результата на 8080, после этого попробуйте "весна"
  4. Затем нажмите F9 (KILL) и нажмите «9» (SIGKILL)

это убьет процесс, оставленный на порте 8080, и позволит вам запустить приложение. 

1
twinster

В загрузочном приложении Spring (с помощью Spring Starter Project) у нас есть порт обновления в Server.xml с использованием сервера Tomcat и добавляем этот порт в application.property (insrc/main/resources) Код: server.port = 8085

И обновите Maven Project, затем запустите приложение

0
Shubham Kumawat