Estou estando usar o Hibernate com o Tomcat, então seguir os passos encontrados no Quickstart with Tomcat.
Declarei os recursos em servlet.xml; coloquei os pacotes necessários na lib de minha aplicação; o hibernate.cfg.xml em WEB-INF/classes, alterando o exemplo apropriado para o dialeto do meu banco (SQL Server) e outros detalhes; mapeei minha classe de persistência orcamento.base.Funcao no arquivo Funcao.hbm.xml; copiei e compilei a classe HibernateUtil encontrada no Quickstart; depois, como estou usando Struts, criei um Action, um ActionForm, e o DAO que implementa o Hibernate.
Depois que tudo isso foi feito, fui no browser, digitei o caminho do Action que deveria listar todas as funções, então acontece o seguinte erro:
O erro é exatamente na classe HibernateUtil, no seguinte local:
static {
try {
// Create the SessionFactory
sessionFactory = new Configuration().configure().buildSessionFactory(); // O ERRO EH AQUI!!
} catch (HibernateException ex) {
throw new RuntimeException("Configuration problem: " + ex.getMessage(), ex);
}
}
Alguém poderia me dar uma pista de como resolver isso?
Uma observação: Como eu deveria mapear em hibernate.cfg.xml o arquivo de recursos da classe Funcao? Estou colocando no momento /orcamento/dao/hibernate/Funcao.hbm.xml
se eu nao estou enganado, java.lang.ExceptionInInitializerError acontece quando uma classe nao pode ser inicializada. Talvez uma exception num boloco static{}… Sua excessao diz que nao instanciou HiberFuncaoDAO…
Deve ser alguma besteira.
se vc mapear, /orcamento/dao/hibernate/Funcao.hbm.xml ,
precisa existir uma Classe orcamento.dao.hibernate.Funcao.java no mesmo pacote.
este stacktrace nao foi o lançado aqui, mostre esse:
Mudei o arquivo de mapeamento (Funcao.hbm.xml) para a pasta onde se encontra a classe de persistência (Funcao). No entanto, o problema continua. Agora vou fazer o que me sugeriu: colocar a exceção RuntimeException. Com isso voce procura um maior detalhamento do erro?
java.lang.ExceptionInInitializerError
at rh.dao.hibernate.HiberDepartamentoDAO.procurar(HiberDepartamentoDAO.java:83)
at rh.bo.HiberDepartamentoBO.procurar(HiberDepartamentoBO.java:58)
at rh.action.DetalheDepartamentoAction.execute(DetalheDepartamentoAction.java:82)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:195)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:564)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677)
at java.lang.Thread.run(Thread.java:536)
Caused by: java.lang.RuntimeException: Configuration problem: could not instantiate CacheProvider: net.sf.ehcache.hibernate.Provider
at util.HibernateUtil.<clinit>(HibernateUtil.java:27)
… 33 more
Caused by: net.sf.hibernate.HibernateException: could not instantiate CacheProvider: net.sf.ehcache.hibernate.Provider
at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:133)
at net.sf.hibernate.cfg.Configuration.buildSettings(Configuration.java:1119)
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:748)
at util.HibernateUtil.<clinit>(HibernateUtil.java:25)
… 33 more
Caused by: java.lang.ClassNotFoundException: net.sf.ehcache.hibernate.Provider
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1366)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1213)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:322)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:130)
at net.sf.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:86)
at net.sf.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:130)
… 36 more
Valeu mesmo a ajuda! O problema restante era mesmo a falta das bibliotecas no CLASSPATH. Pensava que bastava colocar a hibernate2.jar, mas não é bem assim.