Pourquoi j'obtiens l'erreur suivante lors de l'exécution de Google App à partir d'eclipse?
J'ai fait une recherche et trouvé QuickTip: exception verifyerror avec jdk 7:
Si vous êtes aux prises avec le type suivant d'erreur
java.lang.VerifyError: Expecting a stackmap frame at branch target 6 bla bla bla …
alors une solution simple est d'ajouter le suivant par défaut de l'argument JVM
-XX:-UseSplitVerifier
Si vous le faites dans eclipse, comme je l'étais, alors goto Fenêtre -> Préférences -> Installé Jre ->, et ajouter le paramètre par défaut.
Qu'est-ce paramètre n'? Oracle juste mentionne que c'est un nouveau type de checker avec StackMapTable attributs. Hein! Profitez-en! Il est Oracle.
Cependant, lorsque je vais à la Installé Jre paramètres, il dit An error has occurred when creating this preference page
J'ai commencé à apprendre à propos de Google App Engine et a commencé avec Google CodeLabEx0, et je pense que ça a bien marché parce que j'ai vu sur mon navigateur ce que j'étais censé le voir. Mais quand j'ai déménagé sur le deuxième chapitre CodeLabEx1, il y a une erreur qui ne me permet pas de créer des produits ou des articles par le biais de l'interface du navigateur. Puis j'ai regardé l'éclipse de la console et vu ce:
Oct 28, 2011 11:40:30 PM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
Oct 28, 2011 11:40:31 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFO: Successfully processed C:\Users\rock84\Downloads\CodeLabEx1\CodeLabEx1\war\WEB-INF/appengine-web.xml
Oct 28, 2011 11:40:31 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFO: Successfully processed C:\Users\rock84\Downloads\CodeLabEx1\CodeLabEx1\war\WEB-INF/web.xml
Oct 28, 2011 4:40:31 PM com.google.appengine.tools.development.DevAppServerImpl start
INFO: The server is running at http://localhost:8888/
Oct 28, 2011 11:40:59 PM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: Error for /product
java.lang.VerifyError: Expecting a stackmap frame at branch target 48 in method com.google.appengine.codelab.ProductServlet.doPut(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V at offset 38
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428)
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Je n'ai aucune idée de ce que cela pourrait être. C'est une nouvelle installation d'Eclipse 3.7 avec les logiciels suivants:
- Eclipse IDE pour Développeurs Java
- Google App Engine SDK Java 1.5.5
- Gooogle Plugin pour Eclipse 3.7
- Google Web Toolkit SDK 2.4.0
Je suis sur Windows 7 64 bits avec la version Java 1.7.0
Vous devez vous connecter pour publier un commentaire.
Ok, j'ai trouvé la solution. C'est ce que j'ai écrit au dessus. En fait, j'ai l'ajout de l'argument de la mauvaise eclipse installation. Il fonctionne maintenant.
"Si vous êtes aux prises avec le type suivant d'erreur
java.lang.Exception verifyerror: Attend un stackmap cadre à la direction de la cible 6 bla bla bla ....
ensuite, une solution simple est d'ajouter les éléments suivants JVM par défaut de l'argument-XX:-UseSplitVerifier
Si vous le faites dans eclipse, comme je l'étais, alors goto Fenêtre -> Préférences -> Installé Jre ->, et ajouter le paramètre par défaut.
Qu'est-ce paramètre n'? Oracle juste mentionne que c'est un nouveau type de checker avec StackMapTable attributs. Hein! Profitez-en! Il est Oracle."
Grâce à ce mec: http://vikashazrati.wordpress.com/2011/10/09/quicktip-verifyerror-with-jdk-7/
C'est aussi possible par la modification de votre configuration d'essai:
Run > Exécuter les configurations
Choisissez votre projet d'Application Web à partir de la gauche, ouvrez l'onglet Arguments et ajouter l'option-XX:-UseSplitVerifier argument de la VM arguments.
Les avantages de cette approche est aussi son inconvénient: elle s'applique uniquement à ce projet, au lieu de toute une installation VM.
J'ai eu le même problème lors du déploiement de mon application GWT en FGA et j'ai été à l'aide du JDK 7. La commutation du projet de JDK 6 résolu ce problème (j'ai oublié qu'à cette époque, seuls les JDK 5 et 6 est pris en charge par GAE).