2016-06-15 5 views
0

私は抽象クラス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) 
+0

com/namespace/problem/Problem.classの戦争の中で開催されている、あなた自身の問題クラスですか?その名前空間は、フロントエンドのページで、適切なインポートを介して参照されているため、Problem.staticMethod()で参照できますか?同じ戦争のフロントエンドから他のオブジェクトにアクセスできますか? – ManoDestra

+1

@ManoDestraパッケージに入っています。そしてそれは正しくインポートされ、他のすべてのクラスにアクセスできます。私は問題を発見した。愚かな解決策について私の答えを見てください。 – DontTurnAround

答えて

0

明らかにXML設定ファイルがあり、そのパスはenv varで定義されています。私のローカルマシンのvarは正しいですが、AWSでは、私のレポの誰かがファイルの名前を変更したため、間違っていました。どうやら、何らかの理由で、存在しないファイルについての賢明なエラーの代わりに、configファイルを使用しないクラスからNoClassDefFoundErrorが得られます。