私は抽象クラスProblem
を持っています。パッケージはcom.namespace.problem
です。私のtomcatアプリケーションは、各ページでProblem.staticMethod()
を呼び出します。すべてのページに500エラー、NoClassDefFoundError
が表示されます。デバッガでは、Problem
から静的フィールドにアクセスできます。私は正常にインスタンスメソッドにブレークポイントを配置することができます。それは静的メソッドにブレークポイントを配置することができず、私が呼び出す静的メソッドはNoClassDefFoundError
となります。抽象クラスのTomcatのNoClassDefFoundError
TomcatはDockerコンテナ内で実行されています。ドッキング・コンテナをローカル・マシンで実行すると、問題はありません。 AWSインスタンスで実行すると、すべてのページにNoClassDefFoundError
があります。
私はClassNotFoundException
またはExceptionInInitializerError
を検索する必要がありますが、何も見つかりませんでした。
問題は(抽象的であるため)初期化できません。デバッガにProblem.class
が表示されない場合は、エラーが発生します。私はProblem
を拡張するクラスをインスタンス化することはできません、私は同じエラーが発生します。
この原因は何ですか?ドッカーの要点はプラットフォームに依存しないため、AWSではなぜこのようなことが起こるのか分かりませんが、私のコンピュータでは同じWARを展開しています。
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:574)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:461)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
root cause
javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class com.namespace.problem.Problem
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:909)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:838)
org.apache.jsp.view.system.index_jsp._jspService(index_jsp.java:381)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
root cause
java.lang.NoClassDefFoundError: Could not initialize class com.namespace.problem.Problem
com.namespace.system.Application.setInitialState(Application.java:327)
com.namespace.system.Application.setInitialState(Application.java:296)
com.namespace.system.Application.setInitialState(Application.java:292)
com.namespace.mvc.controller.Controller.<init>(Controller.java:80)
com.namespace.mvc.controller.SystemController.<init>(SystemController.java:20)
org.apache.jsp.view.system.index_jsp._jspService(index_jsp.java:122)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
com/namespace/problem/Problem.classの戦争の中で開催されている、あなた自身の問題クラスですか?その名前空間は、フロントエンドのページで、適切なインポートを介して参照されているため、Problem.staticMethod()で参照できますか?同じ戦争のフロントエンドから他のオブジェクトにアクセスできますか? – ManoDestra
@ManoDestraパッケージに入っています。そしてそれは正しくインポートされ、他のすべてのクラスにアクセスできます。私は問題を発見した。愚かな解決策について私の答えを見てください。 – DontTurnAround