2010-08-17 5 views
0

я разворачивал мое приложение к официальному серверу и начал получать эту ошибку:JSF 2.0 и Hibernate ошибка

Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class app.HibernateUtil org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) org.apache.jsp.ajax.search_jsp._jspService(search_jsp.java:67) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NoClassDefFoundError: Could not initialize class app.HibernateUtil app.PersistanceHelper.(PersistanceHelper.java:23) app.SearchBean.(SearchBean.java:26) org.apache.jsp.ajax.search_jsp._jspService(search_jsp.java:54) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Перед развертыванием приложение работало нормально. Мой класс HibernateUtil был создан мастером Netbeans. Я не вижу, где возникает проблема. Я потратил некоторое время на поиск подобной проблемы в google, но найденные ответы (отсутствующие банки, орфографические ошибки и т. Д.) Не применимы в этом решении, поскольку они работают на моем ПК, а не на официальном сервере. Любые мысли по этому поводу? При необходимости я могу добавить остальные источники. Журнал Apache Tomcat не содержит ошибок. Спасибо за любую помощь.

ответ

1

Я думаю, что ваш класс на пути к классам, но ClassLoader работает в ошибку при попытке нагрузки класс (как намекают сообщение). Обычно это происходит, когда класс имеет статический блок или статические элементы, которые используют Class, которые не могут найти ClassLoader.

В частном случае это генерироваться HibernateUtil.java, он должен иметь что-то вроде этого:

static { 
    URL myurl = Thread.currentThread().getContextClassLoader().getResource("/some/path/to/hibernate.cfg.xml"); 
    sessionFactory = new Configuration().configure(myurl).buildSessionFactory(); 
} 

Итак:

  • Убедитесь, что файл конфигурации спящего режима присутствует ожидались.
  • Убедитесь, что баки Hibernate присутствуют на пути класса целевой машины.
  • Возможно, добавьте try { ... } catch (Throwable t) { ... } в ваш статический блок, чтобы зарегистрировать ошибку.
1

Вы должны прочитать документацию пользователя, которая поставляется с дистрибутивом Hibernate. В Hibernate JARs есть множество зависимостей времени выполнения от других JAR, таких как некоторые из Apache Commons и JRs «slf4j», например. Если они отсутствуют во время выполнения, Hibernate не будет работать, даже если все JAR-устройства Hibernate находятся в нужном месте.