JSF 2.0 и ошибка гибернации - PullRequest
       22

JSF 2.0 и ошибка гибернации

0 голосов
/ 17 августа 2010

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

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.JspSeravaServlet.service.servicejavax.servlet.http.HttpServlet.service (HttpServlet.java:717)

первопричина

javax.servlet.ServletException: java.lang.NoClassDefFoundError: Не удалось инициализировать класс app.Hgiber.apache.jasper.runtime.PageContextImpl.doHandlePageException (PageContextImpl.java:862) org.apache.jasper.runtime.PageContextImpl.handlePageException (PageContextImpl.java:791) org.apsp.: 67) org.apache.jasper.runtime.HttpJspBase.service (HttpJspBase.java:70) javax.servlet.http.HttpServlet.service (HttpServlet.java:717) org.apache.jasper.servlet..java: 260) javax.servlet.http.HttpServlet.service (HttpServlet.java:717)

основная причина

java.lang.NoClassDefFoundError: Не удалось инициализировать приложение класса app.HibernateUtil.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.serHttpJspBase.java:70) javax.servlet.http.HttpServlet.service (HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:377) org.serlet.aplet.serviceJspFile (JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:260) javax.servlet.http.HttpServlet.service (HttpServlet.java:7173

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

Ответы [ 2 ]

1 голос
/ 18 августа 2010

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

1 голос
/ 17 августа 2010

Я думаю, что ваш класс находится на пути к классам, но 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 ожидаем.
  • Убедитесь, что баночки Hibernate присутствуют на пути к классам целевой машины.
  • Возможно, добавьте try { ... } catch (Throwable t) { ... } в ваш статический блок для регистрации ошибки.
...