[JAVA] J'étais accro à NoSuchMethodError dans Cloud Endpoints

Aperçu

Lors de la création d'une API Rest à l'aide de Cloud Endpoints dans un environnement GAE / Java Je procédais à l'implémentation en regardant Tutoriel officiel Google. À un moment donné, j'ai eu un NoSuchMethodError et il a cessé de fonctionner correctement.

com.google.apphosting.runtime.jetty9.JettyLogger warn: Error for /_ah/api/echo/v1/echo (JettyLogger.java:29)
java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectReader.forType(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/ObjectReader;
	at com.google.api.server.spi.request.ServletRequestParamReader.deserializeParams(ServletRequestParamReader.java:177)
	at com.google.api.server.spi.request.RestServletRequestParamReader.read(RestServletRequestParamReader.java:135)
	at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemService.java:349)
	at com.google.api.server.spi.handlers.EndpointsMethodHandler$RestHandler.handle(EndpointsMethodHandler.java:119)
	at com.google.api.server.spi.handlers.EndpointsMethodHandler$RestHandler.handle(EndpointsMethodHandler.java:102)
	at com.google.api.server.spi.dispatcher.PathDispatcher.dispatch(PathDispatcher.java:50)
	at com.google.api.server.spi.EndpointsServlet.service(EndpointsServlet.java:72)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772)
	at com.google.api.control.ControlFilter.doFilter(ControlFilter.java:331)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
	at com.google.api.control.ConfigFilter.doFilter(ConfigFilter.java:125)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
	at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
	at com.google.apphosting.runtime.jetty9.ParseBlobUploadHandler.handle(ParseBlobUploadHandler.java:120)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1182)
	at com.google.apphosting.runtime.jetty9.AppEngineWebAppContext.doHandle(AppEngineWebAppContext.java:171)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
	at com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:297)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
	at org.eclipse.jetty.server.Server.handle(Server.java:539)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
	at com.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:202)
	at com.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81)
	at com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
	at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchServletRequest(JavaRuntime.java:692)
	at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchRequest(JavaRuntime.java:654)
	at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:624)
	at com.google.apphosting.runtime.JavaRuntime$NullSandboxRequestRunnable.run(JavaRuntime.java:818)
	at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:274)
	at java.lang.Thread.run(Thread.java:745)

Comment améliorer

Voici comment l'améliorer dans mon environnement.

Le problème était qu'il y avait plusieurs fichiers jar dans la bibliothèque appelée jackson-core, provoquant des incohérences. En même temps que CloudEndpoints, Jacson core a été décrit dans le fichier pom.xml pour créer une dépendance, ce qui semble avoir causé une incohérence.

J'ai supprimé la bibliothèque associée à jackson-core que j'avais ajoutée indépendamment parce que je voulais utiliser ObjectMapper, et j'ai essayé de la déployer à nouveau. Il a été confirmé que le traitement a été effectué correctement.

Matériel de référence

https://groups.google.com/forum/#!topic/google-cloud-endpoints/Rf7f9GreGGs

Recommended Posts

J'étais accro à NoSuchMethodError dans Cloud Endpoints
J'étais accro à la méthode du rouleau
J'étais accro au test Spring-Batch
J'étais accro aux tests unitaires avec l'opérateur de tampon dans RxJava
J'étais accro au record du modèle associé
J'étais accro au démarrage de sbt
Ce à quoi j'étais accro lors de l'introduction de la bibliothèque JNI
J'étais accro à la mise à jour de la déclaration dans MyBatis
J'étais accro au réglage de laradock + VSCode + xdebug
Ce à quoi j'étais accro avec l'API REST Redmine
J'étais étrangement accro à l'utilisation de l'API Stream de Java avec Scala
L'histoire à laquelle j'étais accro lors de la création de STS
La partie à laquelle j'étais accro dans "Introduction à Ajax dans les applications Web Java" de NetBeans
J'étais accro à la réécriture sur @ SpringApplicationConfiguration-> @SpringBootTest
À propos de la question pour laquelle j'étais accro à l'utilisation de hashmap
J'étais accro au paramètre API version min23 de registerTorchCallback
Mémorandum: Ce à quoi j'étais accro quand j'ai frappé l'API de comptabilité freee
[Rails] J'étais accro aux paramètres nginx lors de l'utilisation d'Action Cable.
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
Problèmes auxquels j'étais accro lors de la création de l'environnement digdag avec docker
Enregistré parce que j'étais accro à l'entrée standard de la classe Scanner
J'étais accro au scrollview car je ne pouvais pas appuyer sur la taille variable UIView
[Circle CI] J'étais accro au test automatique de Circle CI (rails + mysql) [Memo]
J'étais accro à l'utilisation de RXTX avec Sierra
J'ai essayé d'organiser la session en Rails
J'étais accro à faire onActivityResult () avec DialogFragment
Je veux obtenir la valeur en Ruby
J'étais accro à ne pas pouvoir me connecter à AWS-S3 à partir du conteneur Docker
J'étais un peu accro à la comparaison S3 Checksum, alors prenez note.
SpringSecurity J'étais accro à essayer de me connecter avec un mot de passe haché (résolu)
Je veux intégrer n'importe quel TraceId dans le journal
Tokoro j'ai réécrit dans la migration de Wicket 7 à 8
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
Notez que j'étais accro aux paramètres du projet Android d'IntelliJ IDEA
Ce que j'ai corrigé lors de la mise à jour vers Spring Boot 1.5.12 ・ Ce à quoi j'étais accro
Ce à quoi j'étais accro en utilisant rspec sur des rails
J'étais accro à la configuration de default_url_options avec l'introduction de la conception de Rails
J'étais confus parce qu'il y avait une scission dans le tableau
Contribué à Gradle et a été nommé dans la note de publication
Je souhaite passer au même écran dans l'état enregistré
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java
J'ai essayé de développer la fonction de cache d'Application Container Cloud Service dans l'environnement local
[Circle CI] Une histoire à laquelle j'étais accro chez Start Building
Causes techniques et contre-mesures pour les points auxquels j'étais accro avec la première application Android et Kotlin
Passer les paramètres régionaux i18n à JavaScript
J'ai essayé de résumer ce qui était demandé lors de l'édition site-java-
J'ai essayé d'illuminer le sapin de Noël dans un jeu de la vie
Tri des données Décroissant, croissant / Rails
Une note quand j'étais accro à la conversion d'Ubuntu sur WSL1 en WSL2
J'ai essayé d'expliquer la méthode
Ce que j'ai fait lors de la migration de la série Spring Boot 1.4 vers la série 2.0
Que faire lorsque Cloud 9 est plein dans le didacticiel Rails
L'histoire que je voulais développer Zip