Grails: Разрешение "Сервер не запускался для порта 8080: адрес уже используется".
Я получаю эту ошибку при попытке решить "Server failed to start for port 8080: Address already in use
"
Error executing script 8888: For input string: ""
Может ли кто-нибудь помочь? Не знаю, что случилось. Спасибо.
Ответы
Ответ 1
Когда номер порта 8080 уже используется и вы хотите повторно использовать тот же порт, вы должны убить его процесс:
Сначала проверьте pid процесса, который использует порт 8080. Для этого выполните:
lsof -w -n -i tcp:8080
![Result after running Command]()
В приведенном выше примере pid составляет 3812 для процесса, который использует порт 9090
Обратите внимание на PID. PID может отличаться на вашей машине. Нам нужно это для выполнения следующей команды:
![kill process]()
поэтому вам придется протестировать его с помощью run-app:
grails run-app
ОБНОВЛЕНИЕ:
Поскольку вывод lsof -w -n -i tcp:8080| awk '{print $2}'|awk 'END{print}'
является PID
, Вы можете автоматически уничтожить процесс порта PID:
kill -9 `lsof -w -n -i tcp:8080| awk '{print $2}'|awk 'END{print}'`
Ответ 2
Если вы используете Grails/Groovy Tool Suite (Eclipse based IDE), выберите Запустить как > Запустить конфигурации....
Затем на вкладке Grails введите так:
-Dserver.port=8050 run-app
Итак, Grails будет работать на порту 8050 вместо порта по умолчанию (8080).
Ответ 3
Сообщение
Серверу не удалось запустить порт 8080: адрес уже используется
указывает, что какой-то другой процесс на вашем компьютере уже привязал себя к порту 8080. Я бы предположил, что это экземпляр Tomcat, запущенный либо из-за того, что вы его запустили, либо из-за того, что вы используете. p >
В любом случае этот вопрос должен помочь вам завершить процесс, использующий порт.
Что касается второй ошибки в отношении script 8888, я понятия не имею. Grails не пытается запустить этот script в моей среде, поэтому я предполагаю, что он связан с плагином, который вы установили.
Ответ 4
Проблема заключается в том, что номер порта 8080 уже используется. Таким образом, вам либо нужно остановить этот процесс, чтобы освободить место для нового, либо указать grails -Dserver.port=8090 run-app
при запуске приложения.
Однако, поскольку у вас есть ошибка script, возможно, вы не указали порт в свой BuildConfig.groovy.
здесь решение:
добавьте grails.server.port.http=8888
в BuildConfig.groovy
см. комментарий здесь:
http://www.icodeya.com/2012/06/grails-resolving-server-failed-to-start.html
Ответ 5
Если вы используете STS или Eclipse (или, возможно, любую среду, построенную на Eclipse), один из вариантов - перейти в перспективу отладки (Окно → Открыть перспектива → Отладка). Оттуда вы можете щелкнуть правой кнопкой мыши на своем рабочем сервере и нажать Завершить и перезапустить. Это убьет текущий сервер и перезапустится на том же порту, чтобы вы не получили сообщение Server failed to start for port 8080: Address already in use
.
Что касается Error executing script 8888: For input string: ""
, я не видел его раньше, но кажется, что @ShootingStar имеет ответ.
Ответ 6
Когда номер порта 8080 уже используется и вы хотите повторно использовать тот же порт, вы должны убить его процесс:
Используйте fuser 8080/tcp
, чтобы напечатать вам PID процесса, связанного с этим портом.
И этот fuser -k 8080/tcp
убьет этот процесс.
Woks только для Linux. Более универсальным является использование lsof -i4
(или 6 для IPv6).
ПРИМЕР: если порт равен 8080, запустите на терминале:
fuser -k -n tcp 8080
Вот и все!
Ответ 7
КАК УБИТЬ ДЕНЕЖНЫЙ ПОРТ
откройте командную строку и введите C: > netstat -a -n -o | найти "8080"
найти PID примера порта
TCP 0.0.0.0:8888 0.0.0.0:09 ПРОСЛУШИВАНИЕ 9068
Далее
C: > taskkill/PID 9068/F
УСПЕХ: Процесс с PID 9068 завершен.
Ответ 8
Легче других опубликованных ответов.
В окне консоли есть значок X и XX. Когда вы наводите курсор на него. Вы увидите воздушные шары, показывающие "Удалить запуск" и "Удалить все завершенные запуска".
Нажмите на них обоих. Eclipse очистит все существующие серверы, чтобы вы могли перезапустить сервер на своем порту по умолчанию.
Ответ 9
Вам нужно убить процесс, который выполняется на порту 8080;
Поэтому используйте команду:
netstat -plten |grep java
используется grep java, поскольку tomcat использует java как свои процессы.
Он покажет список процессов с номером порта и идентификатором процесса
tcp6 0 0 :::8080 :::* LISTEN
1000 30070621 16085/java
число перед /java является идентификатором процесса. Теперь используйте команду kill, чтобы убить процесс
kill -9 16085
-9 подразумевает, что процесс будет убит принудительно.
Ответ 10
Это означает, что существует служба, использующая порт 8080. Вы можете ввести на терминале команду "netstat", чтобы проверить это.
Как остановить сервис, использующий этот порт? В Windows вы можете остановить такой сервис с помощью этих шагов:
- Войдите в вашу систему как администратор
- В меню ПУСК выберите ПАНЕЛЬ УПРАВЛЕНИЯ, затем АДМИНИСТРАТИВНЫЕ ИНСТРУМЕНТЫ, затем УСЛУГИ.
- В списке найдите службу с именем, оканчивающимся на: Веб-сервер, и остановите его.
Если он не работает как служба, вам может потребоваться использовать диспетчер задач, чтобы принудительно остановить его.