2011-10-28 10 views
28

Hice una búsqueda y encontró QuickTip: VerifyError with jdk 7:¿Por qué recibo el siguiente error al ejecutar Google App desde eclipse?

If you are struggling with the following kind of error

java.lang.VerifyError: Expecting a stackmap frame at branch target 6 bla bla bla …

then a simple solution is to add the following default JVM argument -XX:-UseSplitVerifier

If you are doing it in eclipse, like i was, then goto Window -> Preferences -> Installed JREs -> and add the default parameter.

What does this setting do? Oracle just mentions that it a new type checker with StackMapTable attributes. Huh! Enjoy! It is Oracle now.

Sin embargo, cuando voy a la configuración del JRE instalados dice An error has occurred when creating this preference page

empecé a aprender acerca de Google App Engine y empecé con CodeLabEx0 de Google, y creo funcionó bien porque vi en mi navegador lo que se suponía que debía ver. Pero cuando pasé al segundo capítulo CodeLabEx1, hay un error que no me permite crear ningún producto o artículo a través de la interfaz del navegador. Luego miré la consola del eclipse y vi esto:

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) 

No tengo idea de lo que podría ser. Se trata de una nueva instalación de Eclipse 3.7 con el siguiente software instalado:

  • Eclipse IDE para desarrolladores de Java SDK
  • Google App Engine Java 1.5.5
  • Gooogle plugin para Eclipse 3.7
  • Toolkit
  • Google Web SDK 2.4.0

estoy en Windows 7 de 64 bits con la versión 1.7.0 de Java

Respuesta

30

Bueno, he encontrado la manera lution Es lo que escribí en la parte superior. Resulta que estaba agregando el argumento a la instalación de eclipse incorrecta. Ahora funciona.

"Si usted está luchando con el siguiente tipo de error java.lang.VerifyError:. Contar con un marco stackmap al objeto de bifurcación 6 bla bla bla ... continuación, una solución simple es añadir el siguiente argumento JVM por defecto -XX : -UseSplitVerifier Si lo hace en eclipse, como yo, vaya a Ventana -> Preferencias -> JRE instalados -> y agregue el parámetro predeterminado. ¿Qué hace esta configuración? Oracle solo lo menciona como un nuevo tipo de verificador con los atributos de StackMapTable. ¡Eh! ¡Disfruta! Ahora es Oracle ". Gracias a este tio: http://vikashazrati.wordpress.com/2011/10/09/quicktip-verifyerror-with-jdk-7/

2

tuve problema similar al desplegar mi aplicación GWT en GAE y estaba usando JDK 7. Cambio del proyecto para JDK 6 resuelto ese problema (me olvidé de que en este momento sólo JDK 5 y 6 es compatible con GAE).

+0

Además, consulte la [Documentación de Google] (https://developers.google.com/appengine/docs/java/gettingstarted/installing) para la versión compatible de Java. – gcbound

7

Esto también es posible cambiando la configuración de ejecución: Ejecutar> Ejecutar configuraciones

Escoja su proyecto de aplicación Web desde la izquierda, abra la pestaña Argumentos y añadir la -XX: -UseSplitVerifier argumento a los argumentos de VM.

Las ventajas de este enfoque también son sus inconvenientes: solo se aplica a este proyecto, en lugar de a toda una instalación de VM.

Cuestiones relacionadas