2011-10-28 16 views
28

Ho fatto una ricerca e ho trovato QuickTip: VerifyError with jdk 7:Perché ricevo il seguente errore durante l'esecuzione dell'app Google da 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.

Tuttavia, quando vado alle impostazioni di JRE installate dice An error has occurred when creating this preference page

ho iniziato a conoscere Google App Engine e iniziato con CodeLabEx0 di Google, e penso che ha funzionato bene perché ho visto sul mio browser ciò che avrei dovuto vedere. Ma quando sono passato al secondo capitolo CodeLabEx1, c'è un errore che non mi consente di creare prodotti o elementi attraverso l'interfaccia del browser. Poi ho guardato la console di eclissi e ho visto:

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) 

Non ho idea di cosa potrebbe essere. Si tratta di una nuova installazione di Eclipse 3.7 con il seguente software installato:

  • Eclipse IDE per sviluppatori Java
  • Google App Engine SDK Java 1.5.5
  • Gooogle Plugin per Eclipse 3.7
  • Google Web Toolkit SDK 2.4.0

sono su Windows 7 a 64 bit con la versione Java 1.7.0

risposta

30

Ok, ho trovato il modo luzione. È quello che ho scritto in cima. Risulta che stavo aggiungendo l'argomento all'installazione errata di Eclipse. Ora funziona.

"Se siete alle prese con il seguente tipo di errore java.lang.VerifyError:. In attesa di un fotogramma stackmap a destinazione del ramo 6 bla bla bla ... quindi una soluzione semplice è quella di aggiungere il seguente argomento di default JVM -XX : -UseSplitVerifier Se lo stai facendo in eclissi, come lo ero io, quindi vai a Finestra -> Preferenze -> JRE installati -> e aggiungi il parametro predefinito Cosa fa questa impostazione? Oracle afferma che è un nuovo tipo di controllo con gli attributi StackMapTable. Huh! Enjoy! Adesso è Oracle. " Grazie a questo tizio: http://vikashazrati.wordpress.com/2011/10/09/quicktip-verifyerror-with-jdk-7/

2

Ho avuto problemi simili durante la distribuzione di mia applicazione GWT in GAE e stavo usando JDK 7. Accensione del progetto per JDK 6 risolto il problema (ho dimenticato che in questo momento solo JDK 5 e 6 è supportato da GAE).

+0

Inoltre, consultare la [documentazione di Google] (https://developers.google.com/appengine/docs/java/gettingstarted/installing) per la versione supportata di Java. – gcbound

7

Questo è anche possibile cambiare la configurazione di esecuzione: Run> Run configurazioni

Scegli il tuo progetto di applicazione Web da sinistra, aprire la scheda Argomenti e aggiungere il XX: -UseSplitVerifier argomento per gli argomenti VM.

I vantaggi di questo approccio sono anche i suoi aspetti negativi: si applica solo a questo progetto, anziché a un'intera installazione VM.

Problemi correlati