2016-06-15 3 views
0

У меня есть абстрактный класс, Problem. Это пакет com.namespace.problem. Мое приложение tomcat вызывает Problem.staticMethod() на каждой странице. Я получаю ошибку 500, NoClassDefFoundError на каждой странице. В отладчике я могу получить доступ к статическим полям от Problem. Я могу успешно разместить точки останова по своим методам экземпляра. Он не может помещать точки останова на статические методы, и любой статический метод, который я вызываю, вызывает NoClassDefFoundError.NoClassDefFoundError в Tomcat для абстрактного класса

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, путь которого был определен в окр вар. Var на моей локальной машине был прав, на AWS это было неправильно, потому что кто-то из моего репо переименовал файл. По-видимому, по какой-то причине вместо разумной ошибки в файле, который не существует, вы получаете NoClassDefFoundError из класса, который даже не использует файл конфигурации.

Смежные вопросы