Почему при запуске Google App из Eclipse появляется следующая ошибка? - PullRequest
28 голосов
/ 29 октября 2011

Я выполнил поиск и нашел QuickTip: VerifyError with jdk 7 :

Если вы боретесь со следующей ошибкой

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

тогда простое решение - добавить следующий аргумент JVM по умолчанию -XX:-UseSplitVerifier

Если вы делаете это в Eclipse, как я, тогда перейдите в Window -> Preferences -> Installed JREs -> и добавьте параметр по умолчанию.

Что делает этот параметр? Oracle просто упоминает , что это новая программа проверки типов с атрибутами StackMapTable. Ха! Наслаждайтесь! Теперь это Oracle.

Однако, когда я захожу в Установленные настройки JRE, он говорит An error has occurred when creating this preference page

Я начал изучать Google App Engine и начал с Google CodeLabEx0, и я думаю, что он работал хорошо, потому что я видел в своем браузере то, что я должен был видеть. Но когда я перешел ко второй главе CodeLabEx1, возникла ошибка, которая не позволяет мне создавать какие-либо продукты или элементы через интерфейс браузера. Затем я посмотрел на консоль затмения и увидел это:

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)

Я понятия не имею, что это может быть. Это новая установка Eclipse 3.7 со следующим установленным программным обеспечением:

  • Eclipse IDE для разработчиков Java
  • Google App Engine Java SDK 1.5.5
  • Плагин Gooogle для Eclipse 3.7
  • Google Web Toolkit SDK 2.4.0

Я нахожусь на Windows 7 64-битной версии Java 1.7.0

Ответы [ 3 ]

30 голосов
/ 29 октября 2011

Хорошо, я нашел решение. Это то, что я написал на самом верху. Оказывается, я добавлял аргумент к неправильной установке затмения. Это работает сейчас.

"Если вы боретесь со следующей ошибкой java.lang.VerifyError: Ожидание кадра стековой карты в целевой ветви 6 бла бла бла…. тогда простое решение - добавить следующий аргумент JVM по умолчанию -XX: -UseSplitVerifier Если вы делаете это в Eclipse, как я, тогда перейдите в Window -> Preferences -> Installed JREs -> и добавьте параметр по умолчанию. Что делает этот параметр? Oracle просто упоминает, что это новая программа проверки типов с атрибутами StackMapTable. Ха! Наслаждайтесь! Теперь это Oracle ». Благодаря этому чуваку: http://vikashazrati.wordpress.com/2011/10/09/quicktip-verifyerror-with-jdk-7/

7 голосов
/ 30 мая 2012

Это также возможно путем изменения конфигурации запуска: Выполнить> Выполнить настройки

Выберите свой проект веб-приложения слева, откройте вкладку Аргументы и добавьте аргумент -XX: -UseSplitVerifier к аргументам виртуальной машины.

Преимущества этого подхода также являются его недостатком: он применяется только к этому проекту, а не к установке всей виртуальной машины.

2 голосов
/ 28 марта 2012

У меня была похожая проблема при развертывании моего приложения GWT в GAE, и я использовал JDK 7. Переключение проекта на JDK 6 решило эту проблему (я забыл, что в настоящее время GAE поддерживает только JDK 5 и 6).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...