2011-10-28 11 views
28

zrobiłem wyszukiwania i znaleźć QuickTip: VerifyError with jdk 7:Dlaczego pojawia się następujący błąd podczas uruchamiania aplikacji Google od zaćmienia?

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.

Jednak, gdy idę do zainstalowanego ustawień JRE to mówi An error has occurred when creating this preference page

zacząłem uczyć o Google App Engine i zaczął z Google CodeLabEx0 i myślę, wszystko działało dobrze, ponieważ widziałem w przeglądarce, co powinienem zobaczyć. Ale kiedy przeszedłem do drugiego rozdziału CodeLabEx1, wystąpił błąd, który nie pozwala mi tworzyć żadnych produktów ani elementów za pośrednictwem interfejsu przeglądarki. Potem spojrzałem na konsolę eclipse i zobaczyłem to:

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) 

Nie mam pojęcia, co to może być. Jest to świeża instalacja Eclipse 3.7 z następującym oprogramowaniem: zainstalowanym

  • Eclipse IDE for Java Developers SDK
  • Google App Engine Java 1.5.5
  • Gooogle Plugin for Eclipse 3.7
  • Google Web Toolkit SDK 2.4.0

jestem na Windows 7 64-bit w wersji Java 1.7.0

Odpowiedz

30

Ok, znalazłem więc lution. To jest to, co napisałem na samym szczycie. Okazuje się, że dodawałem argument do niewłaściwej instalacji zaćmienia. Teraz działa.

„Jeśli mają trudności z następującym rodzajem błędu java.lang.VerifyError. Spodziewając ramkę stackmap na cel oddziału 6 bla bla bla ... następnie prostym rozwiązaniem jest dodanie następującej domyślne JVM argumentu -XX : -UseSplitVerifier Jeśli robisz to w czasie zaćmienia, tak jak ja, to przejdź do okna -> Preferencje -> Zainstalowane JRE -> i dodaj domyślny parametr Co to za ustawienie? Oracle wspomina tylko, że jest to nowy sprawdzian typu z atrybutami StackMapTable Huh! Enjoy! To jest teraz Oracle. " Dzięki tym kolesiem: http://vikashazrati.wordpress.com/2011/10/09/quicktip-verifyerror-with-jdk-7/

2

miałem podobny problem podczas wdrażania Moje app GWT w GAE i używałem JDK 7. Włączenie projektu do JDK 6 rozwiązał ten problem (zapomniałem, że w tym czasie tylko JDK 5 i 6 jest obsługiwany przez GAE).

+0

Zobacz także [Dokumentacja Google] (https://developers.google.com/appengine/docs/java/gettingstarted/installing) dla obsługiwanej wersji oprogramowania Java. – gcbound

7

Jest to również możliwe poprzez zmianę konfiguracji uruchom: Run> Uruchom konfiguracje

Wybierz projekt aplikacji WWW z lewej, otwórz zakładkę argumenty i dodać -XX: -UseSplitVerifier argument argumenty VM.

Zalety tego podejścia są również jego wadą: dotyczy tylko tego projektu, a nie całej instalacji maszyny wirtualnej.

Powiązane problemy