2010-08-17 8 views
0

나는 공식 서버에 내 응용 프로그램을 배포하고이 오류를 받기 시작 : JSF 2.0 및 최대 절전 모드 오류

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에서 비슷한 문제를 검색하는 데 시간을 보냈지 만 공식 서버가 아닌 내 PC에서 작동하는 답변 (누락 된 병, 맞춤법 오류 등)은이 솔루션에 적용 할 수 없습니다. 그것에 관한 어떤 생각? 필요한 경우 나머지 소스를 추가 할 수 있습니다. Apache Tomcat 로그에는 오류가 없습니다. 어떤 도움을 주셔서 감사합니다.

답변

1

클래스가 클래스 패스에 있지만 로드 할 때 ClassLoader이 (메시지가 암시하는대로) 클래스을로드하려고하면 오류가 발생한다고 생각합니다. 이것은 일반적으로 클래스에 정적 블록이 있거나 ClassLoader에서 찾을 수없는 Class을 사용하는 정적 멤버가있는 경우에 발생합니다. 그래서

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

:

  • 확실 최대 절전 모드 설정 파일이 존재가 예상되었다되어 있는지 확인이의 특별한 경우

    은 이런 식으로 뭔가가 있어야 HibernateUtil.java를 생성합니다.
  • 최대 절전 모드 병이 대상 컴퓨터의 클래스 경로에 있는지 확인하십시오.
  • 정적 블록에 try { ... } catch (Throwable t) { ... }을 추가하여 오류를 기록 할 수 있습니다.
1

당신은 Hibernate 배포판에 포함 된 사용자 문서를 읽어야한다. Hibernate JAR은 Apache Commons와 JAR과 같은 다른 JAR에 런타임 종속성을 가지고 있습니다. 예를 들어, "slf4j"JAR도 있습니다. 실행시에 이들이 빠져 있다면 Hibernate는 모든 Hibernate JAR이 올바른 위치에 있어도 작동하지 않을 것이다.