Linux(java 1.6.x)上のtomcat7.0.23にmaven3.0.3ビルドWebアプリケーションをデプロイし、ログインページにクレデンシャルを投稿してアクセスすると、次のエラーが発生しました。pom.xmlは、サーブレット2.5、jsp 2.1、およびJSTL1.2を参照します。
なぜこのエラーが発生するのですか?それを避けるために私は何ができますか?
同じTomcatインスタンスに他の.warファイルをデプロイしましたが、これらのアプリでこの問題に直面したことはありません。
http GETを実行した最初のJSP(login.jsp)はエラーをスローしませんでした。1番目のJSPから2番目のJsp(ChLogin.jsp)へのPOSTで問題が発生しました。
===========================
根本的な原因
java.lang.VerifyError: (class: org/apache/jsp/ChLogin_jsp, method: _jspService signature: (Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V) Inconsistent stack height 0 != 1
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
java.lang.Class.getConstructor0(Class.java:2699)
java.lang.Class.newInstance0(Class.java:326)
java.lang.Class.newInstance(Class.java:308)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:172)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
UPDATE1webapp
のWEB-INF\libには、サーブレット、jsp、またはJSTLjarが含まれていません。多くのアプリケーションの依存関係とSpringjarが含まれています(Spring MVCを使用しています)。
UPDATE2JSP
はプリコンパイルしません。しかし、それは別の日の目標です。
UPDATE3
この問題はtomcat7.0.12、7.0.14、7.0.16にはなく、7.0.19から始まっていることがわかりました。Tomcatユーザーのメーリングリストに投稿されました。おそらくEclipseJDTコンパイラに問題があるという返信がありました。tomcat 7.0.23 /27のコンパイラーをtomcat7.0.16のJDTコンパイラーとLO&BEHOLDに置き換えることで、実際にそうであることを確認しました。すべて問題ありません。Eclipse JDTコンパイラーチーム(存在する場合)に書き込み、このエラーについて投稿する予定です。