Eclipse Oxygen очень медленно запускает сервер при отладке проектов GAE. Серверный процесс зависает в состоянии ожидания остановки

У меня есть проект Maven Java GAE (Google App Engine) в Eclipse Oxygen Release 4.7.2 и Google Cloud Tools для плагина Eclipse версии 1.5.0. Я запускаю свой Eclipse на машине с Windows 10.

У меня есть простой класс сервлета в моем коде:

package it.ale.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "HelloAppEngine", urlPatterns = { "/hello" }, loadOnStartup = 1)
public class HelloAppEngine extends HttpServlet {

    @Override
    public void init() throws ServletException {

        super.init();

        System.out.println("Print something.");

    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");

        response.getWriter().print("Hello App Engine!\r\n");

    }

}

когда я помещаю точку останова отладки в любую строку функции "public void init()", пример в строке:

System.out.println("Print something.");

и я запускаю сервер в режиме ОТЛАДКИ (Отладка как -> App Engine), сервер запускается невероятно МЕДЛЕННО, и я получаю сообщение об ошибке:

серверное приложение Standard на локальном хосте не удалось запустить в течение 240 секунд. Если серверу требуется больше времени, попробуйте увеличить время ожидания в редакторе серверов.


ОБНОВЛЕНИЕ 16 января 2018 г.:

а тем временем пока идет ошибка Eclipse зависает и после этого висит Java процесс запущенного сервера. Поэтому я не могу перезапустить сервер, пока не убью процесс Java-сервера.

Это скриншот, иллюстрирующий эту точку

Обратите внимание, что в правом нижнем углу процесс Java сервера еще не остановлен

На этом снимке экрана показано состояние ожидания остановки

Поэтому я не могу перезапустить сервер, пока не убью процесс Java-сервера.

@BriandeAlwis Есть ли какой-нибудь журнал, который я могу предоставить, чтобы помочь вам лучше? Может быть, проблема с интеграцией Google Cloud SDK «gcloud»?


ОБНОВЛЕНИЕ 16 января 2018 г.:

Я пытаюсь понизить версию в Google Cloud SDK:

  • Google Cloud SDK 172.0.0
  • приложение-двигатель-java 1.9.56
  • приложение-движок-python 1.9.60
  • bq 2.0.26
  • ядро 2017.09.15
  • gsutil 4.27

но проблема сохраняется.

Теперь я вернулся к самой последней версии, снова выделив проблему.

  • Google Cloud SDK 184.0.0
  • приложение-двигатель-java 1.9.60
  • приложение-движок-python 1.9.65
  • bq 2.0.28
  • ядро 2018.01.15
  • gsutil 4.28

person Alessandro Guerrini    schedule 12.01.2018    source источник
comment
Хм, что-то не так: я постоянно так делаю, а запуск - секунда-две. Run работает так же медленно, как Debug? Или вы можете попробовать Отладить, но с отключенными точками останова (Выполнить › Пропустить все точки останова)?   -  person Brian de Alwis    schedule 15.01.2018
comment
Спасибо за ваш ответ. Нет, бег очень быстрый, около секунды или двух. Проблема возникает только тогда, когда эта точка останова INIT активна. Если я отключу эту точку останова, DEBUG будет работать так же быстро, как и RUN, примерно за секунду или две. Я забыл сказать вам, что эту проблему я выделил на машине с Windows 10. Я думал, что проблема в моем компьютере, но я уже указал на ту же проблему на двух других машинах с Windows 8.   -  person Alessandro Guerrini    schedule 15.01.2018
comment
Я забыл... JVM, которую я сейчас использую, - это Oracle JDK 8 версии 1.8.0_151. У меня была такая же проблема с предыдущей версией Oracle JDK 8 версии 1.8.0_74.   -  person Alessandro Guerrini    schedule 15.01.2018
comment
Я подозреваю, что это ошибка в Eclipse JDT, которую я обнаружил слишком. Я обнаружил, что удаление точек останова в представлении Variables и последующее их повторное создание обычно помогает.   -  person Brian de Alwis    schedule 16.01.2018
comment
Извините @BriandeAlwis, но я не думаю, что проблема в этом. Когда я запускаю операцию «Отладка как», Eclipse зависает до тех пор, пока я не достигну ошибки «Стандарт серверного приложения на локальном хосте, не удалось запустить в течение 240 секунд». Если серверу требуется больше времени, попробуйте увеличить время ожидания в редакторе серверов». После этого я ничего не вижу в представлении Variables и, кроме того, Java-процесс запущенного сервера остается висящим. Поэтому я не могу перезапустить сервер, пока не убью процесс Java-сервера. В ближайшее время постараюсь обновить пост.   -  person Alessandro Guerrini    schedule 16.01.2018
comment
Ах, ваше обновление полезно: я не знал, что ваш экземпляр Eclipse тоже зависает. Я тоже могу это воспроизвести. Это ошибка — давайте рассмотрим проблему с CT4E.   -  person Brian de Alwis    schedule 16.01.2018


Ответы (3)


Это было исправлено, начиная с Google Cloud Tools для Eclipse 1.6.0.

Для тех, кому интересны подробности, см. https://github.com/GoogleCloudPlatform/google-cloud-eclipse/issues/2727.

person Chanseok Oh    schedule 31.01.2018

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

Window->Show View->other->Servers(поиск серверов, если их нет) Window->Show View->other->Breakpoints(поиск точек останова, если их нет)

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

person Tharindu Dananjaya    schedule 03.09.2019

Я обновил плагин до версии 1.5.1 и наконец-то увидел, что проблема медленного запуска, как в DEBUG, так и в RUN решена.

В любом случае я обнаружил, что следующая проблема сохраняется:

Тем временем я обнаружил еще одну ошибку... попробуйте заменить код функции INIT на этот код:

@Override
public void init() throws ServletException {

    super.init();

    if (true) {
          throw new RuntimeException();
    }

    System.out.println("Print something.");

}

таким образом я вызываю исключение в начале. Попробуйте нажать Запуск от имени -> App Engine и попытаться остановить сервер. Сервер остается зависшим в состоянии "STOPPING".

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

person Alessandro Guerrini    schedule 01.02.2018
comment
Другая проблема, о которой вы упомянули, это github.com/GoogleCloudPlatform/google-cloud-eclipse/. выпуски/1964. Это будет исправлено в следующем выпуске CT4E. - person Chanseok Oh; 23.02.2018