Alguém poderia me dar uma mão? Quanto tento rodar minha aplicação web aparece o seguinte erro no navegador:
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Filter execution threw an exception
root cause
java.lang.NoClassDefFoundError: Could not initialize class br.edu.unifeob.sgu.uteis.HibernateConnection
br.edu.unifeob.sgu.filtros.FiltroHibernate.doFilter(FiltroHibernate.java:65)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.
Verifique se as bibliotecas requeridas pelo hibernate estão no classpath, tais como o driver de conexão com o banco, os jars do proprio hibernate…
S
samuelm7
Isso já aconteceu comigo algumas vezes, parece que sua classe esta fora do classpath, no meu caso reiniciei o TomCat e funcionou, acho que o TomCat por algum motivo não conseguiu carregar sua classe no classpath.
5
504843
Pessoal,
Já verifiquei e estão todas as bibliotecas necessárias aqui, já reiniciei o tomcat e o problema persiste. Alguém tem alguma ideia do que pode ser?
B
BrunoCarlo
504843:
Pessoal,
Já verifiquei e estão todas as bibliotecas necessárias aqui, já reiniciei o tomcat e o problema persiste. Alguém tem alguma ideia do que pode ser?
O que acontece na classe br.edu.unifeob.sgu.filtros.FiltroHibernate.java linha 65???
5
504843
Bruno Carlo,
Eu tenho o seguinte código:
HibernateConnection.closeSession();
B
BrunoCarlo
Estranho,
Pega o log da exception completo… fica em Tomcat/6.0.16/logs/localhost… e posta ae, tá estranho, mas a priori parece que alguma classe que o br.edu.unifeob.sgu.uteis.HibernateConnection precisa para ser instanciada não está no classpath…
Todas as classes que são importadas pela br.edu.unifeob.sgu.uteis.HibernateConnection estão no classpath? (ps.: dá uma conferida… )
5
504843
Bruno Carlos,
Segue o log do erro:
java.lang.NoClassDefFoundError: Could not initialize class br.edu.unifeob.sgu.uteis.HibernateConnection
at br.edu.unifeob.sgu.filtros.FiltroHibernate.doFilter(FiltroHibernate.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
B
BrunoCarlo
Faz seguinte, põe um try/catch no construtor da classe br.edu.unifeob.sgu.uteis.HibernateConnection, printa a exception e posta ela ae pra gente… ex.:
public HibernateConnection(){
try{
// o codigo original do construtor...
}catch(Throwable t){
t.printStackTrace();
}
}
5
504843
Bruno Carlo,
Olha só o código da classe:
publicclassHibernateConnection{privatestaticfinalSessionFactorysessionFactory;privatestaticfinalThreadLocalthreadSession=newThreadLocal();privatestaticfinalThreadLocalthreadTransaction=newThreadLocal();privatestaticfinalAnnotationConfigurationconfiguration;static{try{configuration=newAnnotationConfiguration();configuration.configure("hibernate.cfg.xml");sessionFactory=configuration.buildSessionFactory();}catch(Throwablet){thrownewExceptionInInitializerError(t);}}publicstaticSessiongetSession(){Sessions=(Session)threadSession.get();try{if(s==null){s=sessionFactory.openSession();threadSession.set(s);}}catch(HibernateExceptione){e.printStackTrace();}//System.out.println("--(CONEXAO: PEGOU A SESSAO.)--");returns;}publicstaticAnnotationConfigurationgetConfig(){returnconfiguration;}publicstaticvoidcloseSession(){try{Sessions=(Session)threadSession.get();threadSession.set(null);if(s!=null&&s.isOpen()){s.close();}}catch(HibernateExceptione){e.printStackTrace();}//System.out.println("--(CONEXAO: FECHOU A SESSAO.)--");}publicstaticvoidbeginTransaction(){Transactiont=(Transaction)threadTransaction.get();try{if(t==null){t=getSession().beginTransaction();threadTransaction.set(t);}}catch(HibernateExceptione){e.printStackTrace();}//System.out.println("--(CONEXAO: BEGIN DE TRANSAÇÃO.)--");}publicstaticvoidcommitTransaction(){Transactiont=(Transaction)threadTransaction.get();try{if(t!=null&&!t.wasCommitted()&&!t.wasRolledBack()){t.commit();threadTransaction.set(null);}}catch(HibernateExceptione){rollbackTransaction();e.printStackTrace();}//System.out.println("--(CONEXAO: COMMIT DE TRANSAÇÃO.)--");}publicstaticvoidrollbackTransaction(){Transactiont=(Transaction)threadTransaction.get();try{threadTransaction.set(null);if(t!=null&&!t.wasCommitted()&&!t.wasRolledBack()){t.rollback();}}catch(HibernateExceptione){e.printStackTrace();}finally{closeSession();}//System.out.println("--(CONEXAO: ROLLBACK DE TRANSAÇÃO.)--");}}
B
BrunoCarlo
Opa,
No bloc estatico printa este throwable… e faz um teste, troque a linha
configuration.configure("hibernate.cfg.xml");
Por
configuration.configure("/hibernate.cfg.xml");
E verifique se o arquivo hibernate.cfg.xml tá em %WEB_APP%/WEB-INF/classes/
5
504843
Pessoal,
Achei uma coisa interessante, quanto vou executar o projeto, aparece a seguinte mensagem na saída (run) do netbeans:
[code]
Note: C:\ProjetosJava\SGU\src\java\br\edu\unifeob\sgu\uteis\HibernateConnection.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
[/code}
5
504843
Bruno Carlo,
Coloquei para imprimir o erro Trowable como vc sugeriu e olha o que constou no tomcat:
at org.hibernate.connection.C3P0ConnectionProvider.configure(C3P0ConnectionProvider.java:154)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:414)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:62)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915)
at br.edu.unifeob.sgu.uteis.HibernateConnection.<clinit>(HibernateConnection.java:37)
at br.edu.unifeob.sgu.filtros.FiltroHibernate.doFilter(FiltroHibernate.java:55)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
B
BrunoCarlo
Pô, mais nada??? foi só isto o log da exception???
Eu dei uma rápida busca aqui nos gogle e tudo que achei foi que possívelmente o driver de conexão ocm a base não esta no classpath…
5
504843
Bruno Carlo,
O driver está sim, eu tentei rodar a aplicação no Netbeans 6.1 e funcionou perfeitamente. O que será que pode ser?
B
BrunoCarlo
504843:
Bruno Carlo,
O driver está sim, eu tentei rodar a aplicação no Netbeans 6.1 e funcionou perfeitamente. O que será que pode ser?</blockquote>
Ixi, agora fiquei sem opções…
Mas antes, quando estava dando o erro, vc tava fazendo de que forma?
Compara o war da forma que tava dando o erro e o war gerado pelo netbenas 6.1…