Ошибка NoSuchMethod в Google App Engine

Мой сервер Google App Engine работает:

  • Административный SDK Firebase
  • Облачные конечные точки Google v2

После недавнего обновления до Endpoints v2 (не уверен, что это связано) я получаю эту ошибку на сервере, пока мое мобильное приложение:

com.google.api.server.spi.SystemService invokeServiceMethod: exception occurred while calling backend method
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)V
at com.google.firebase.FirebaseApp.checkNotDeleted(FirebaseApp.java:314)
at com.google.firebase.FirebaseApp.getOptions(FirebaseApp.java:260)
at com.google.firebase.auth.FirebaseAuth.<init>(FirebaseAuth.java:74)
at com.google.firebase.auth.FirebaseAuth.<init>(FirebaseAuth.java:61)
at com.google.firebase.auth.FirebaseAuth.<init>(FirebaseAuth.java:52)
at com.google.firebase.auth.FirebaseAuth$FirebaseAuthService.<init>(FirebaseAuth.java:316)
at com.google.firebase.auth.FirebaseAuth.getInstance(FirebaseAuth.java:98)
at com.google.firebase.auth.FirebaseAuth.getInstance(FirebaseAuth.java:85)
at com.project.apis.UserAPI.verifyUserIDToken(MyAPI.java:100)

Кто-нибудь может посоветовать? В других отчетах предлагалось обновить зависимость Guava в моем pom.xml, но я даже не использую Guava:


person user2181948    schedule 11.08.2017    source источник


Ответы (1)


Это происходит, когда в пути к классам есть 2 несовместимые версии гуавы. Firebase использует одну версию (v20.0), а библиотеки Google App Engine используют более старую версию (я полагаю, v18.0). Вы можете проверить дерево зависимостей с помощью команды mvn dependency:tree, а затем добавить правило исключения в более старую версию.

person Hiranya Jayathilaka    schedule 11.08.2017
comment
Дерево зависимостей перечисляет Guava только один раз (com.google.guava:guava:jar:19.0:compile). Может проблема в другом? - person user2181948; 11.08.2017
comment
Для Firebase требуется 20.0.0. Попробуйте добавить его в путь к классам и удалить 19.0.0.1. - person Hiranya Jayathilaka; 11.08.2017
comment
Он все еще каким-то образом привязывается к версии 19.0. Можете ли вы опубликовать свое дерево зависимостей? - person Hiranya Jayathilaka; 13.08.2017
comment
Также убедитесь, что веб-архив в вашем каталоге target/ (артефакты, которые развертываются в App Engine) содержит только guava 20.0 в WEB-INF/lib. Maven печально известен тем, что кэширует эти вещи, и вы можете запустить mvn clean, чтобы уничтожить старые артефакты, и перестроить проект с помощью guava 20.0. - person Hiranya Jayathilaka; 13.08.2017