Google App Engine: java.lang.NoClassDefFoundError: com / google / appengine / api / datastore / Query $ Filter

Я получаю эту ошибку только при производстве - сервер разработки работает нормально.

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

Я не совсем уверен, но думаю, это как-то связано с самим процессом развертывания ... Я развертываю из Eclipse. Я использую:

  • Версия Eclipse: Выпуск Oxygen.3 (4.7.3)
  • SDK Google Cloud Tools 194.0.0
  • App Engine 1.9.63

Спасибо!

Обновлено:

Вот простой тестовый код:

@Override
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    res.setContentType("text/plain");
    res.setCharacterEncoding("UTF-8");

    // this throws: java.lang.NoClassDefFoundError - only in PRODUCTION
    Query.Filter filter = Query.FilterOperator.EQUAL.of("name", null);

    res.getWriter().print("Hello App Engine: " + filter);
}

Это не работает в производстве, но работает на сервере разработки!

Обновление 2: Открыл проблему с Google: https://issuetracker.google.com/issues/76144204

Почему голосование против ?? Класс Query.Filter не найден .. как такое может быть ???

Daniel 22.03.2018 18:33

Также предоставьте полную трассировку стека.

Luiggi Mendoza 24.03.2018 16:25

Вы когда-нибудь догадывались об этом? Я начал получать эту ошибку сегодня. При развертывании в AppEngine я получаю NoClassDefFoundError в com / google / appengine / api / datastore / Query $ Filter. Раньше он работал нормально, и я не думаю, что я что-то менял.

pldenc44 25.03.2018 06:49

@ pldenc44: решения пока нет - обновил описание со ссылкой на проблему Google

Daniel 25.03.2018 15:21

Мне удалось обойти эту проблему, обновив свой Google Cloud SDK и перейдя на среду выполнения JAVA8. Я не уверен, какой из них сработал, но я бы сказал, что запуск "gcloud components update" - хорошее место для начала.

pldenc44 26.03.2018 17:04

+1 от меня - на данный момент есть определенная проблема с развертыванием движка приложений. Благодарим также за настройку ошибки Google Issue Tracker.

Steve Neal 26.03.2018 18:59
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
6
1 480
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это проблема Google, которая в настоящее время изучается: https://issuetracker.google.com/issues/76144204

На данный момент исправление состоит в том, чтобы скопировать файл appengine-api-1.0-sdk-1.9.63.jar в каталог WEB-INF / lib, как описано в этом комментарии: https://issuetracker.google.com/issues/76144204#comment45

Другие вопросы по теме

Google App Engine / Java - иврит употребляется как вопросительный знак
Лучший способ сохранить словарь (слов) в Google Cloud Datastore
Com.google.cloud.datastore.DatastoreException: не прошел проверку подлинности. объективировать Java
Почему возникает большая задержка при доступе к службе App Engine с личным доменом?
Как запустить GoogleAppEngineLauncher в окне терминала (оболочка Google Cloud SDK)?
Отправка аутентифицированных HTTP-запросов из ComputeEngine в AppEngine с использованием учетной записи службы по умолчанию
Как выполнить миграцию Django в Google App Engine. Шаг гибкого развертывания?
Google App Engine - отказано в разрешении для прокси / туннелирования на сервере разработки
Переход с облачных конечных точек с версии 1 на версию 2 вызывает ошибку 404 после повышения
Хранилище данных движка приложений: как сделать запрос / фильтр, который возвращает количество объектов с определенным размером массива?