web-dev-qa-db-ja.com

java.lang.VerifyError:スタックマップフレームが必要です

カスタムHttpServletをGAEにロードする方法はありますか? .serverパッケージにHttpServletを含むプロジェクトをアップロードし、web.xmlに追加しました...

<servlet>
   <servlet-name>testServlet</servlet-name>
   <servlet-class>gwtone.server.TestServlet</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>testServlet</servlet-name>
   <url-pattern>/tester/greet</url-pattern>
</servlet-mapping>

他に何か足りないものはありますか、それとも不可能ですか?

--------編集--------

サーバーを初期化するときに表示されるもの。

Jan 22, 2012 4:23:44 AM com.google.apphosting.utils.jetty.JettyLogger info
INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
Jan 22, 2012 4:23:44 AM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFO: Successfully processed E:\Program Files\Eclipse-SDK-3.7.1-win32-x86_64\Workspace\gwtone\war\WEB-INF/appengine-web.xml
Jan 22, 2012 4:23:44 AM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFO: Successfully processed E:\Program Files\Eclipse-SDK-3.7.1-win32-x86_64\Workspace\gwtone\war\WEB-INF/web.xml
Jan 21, 2012 10:23:44 PM com.google.appengine.tools.development.DevAppServerImpl start
INFO: The server is running at http://localhost:8888/
Jan 21, 2012 10:23:44 PM com.google.appengine.tools.development.DevAppServerImpl start
INFO: The admin console is running at http://localhost:8888/_ah/admin

これがクラッシュしたときに表示されるものです。

WARNING: Error for /tester/greet
Java.lang.VerifyError: Expecting a stackmap frame at branch target 14 in method gwtone.server.TestServlet.doGet(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V at offset 0
    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:60)
    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.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.Java:78)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.Java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.Java:362)
    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)

編集#2

package gwtone.server;
import Java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

public TestServlet(){}

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) 
        throws ServletException, IOException {
    System.out.println("0");
    try {
        System.out.println("1");
        resp.getWriter().println("IT WORKED");
        resp.getWriter().flush();
        System.out.println("2");
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("3");
}
}
26
user1163009

GAEはJava 1.6を使用しますが、コードをJava 1.7でコンパイルしました。Java 1.6で再コンパイルする必要がありますコメントによると、Eclipseを使用しているため、プロジェクトのプロパティのJava> CompilerセクションでJavaコンパイラレベル)を設定できます。

enter image description here

25
BalusC

BalusCが指摘したように、問題に対する1つの解決策は、JDK6を使用することです。

別の解決策は、JDK7を使い続けたい場合、VMの引数として「-XX:-UseSplitVerifier」を使用することです。に行く

ウィンドウ→設定→Java→インストール済みJRE→編集...→デフォルトVM arguments

そこに追加します。

Installed JREsJRE Definition

35
Dominik

-XX:-UseSplitVerifierの使用は一時的な解決策です。 Now Javaは、この不良または欠落したスタックマップフレームを許容するバイトコード検証の前のバージョンを使用します。Java8はこのオプションをサポートしていません。

1
Tamil

Eclipse Mars/Project properties/Java compiler:

  • コンパイラー準拠レベルは1.7です(1.6がもうないので)
  • 生成された.classファイルの互換性:1.6
  • ソースの互換性:1.6

1.7の特定のコードを持っていなかったので:-)

サーバーUbuntu + JVM 1.7.0_85-b01上のTomcat 7.0.52 JDK 7u55上のEclipse Eclipse Mars

0
Thy Morel