Hibernate/Struts/Tomcat

Olá pessoal. To com um erro que tá me tirando do sério aqui no Eclipse. Meu Java Build Path do projeto está com todos os jars do hibernate e mesmo assim tenho esta mensagem quando meu Action que usa classes do hibernate é executado:

[code]javax.servlet.ServletException: Servlet execution threw an exception

root cause

java.lang.NoClassDefFoundError: net/sf/hibernate/HibernateException
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:2328)
java.lang.Class.getConstructor0(Class.java:2640)
java.lang.Class.newInstance0(Class.java:321)
java.lang.Class.newInstance(Class.java:303)
org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:143)
org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:280)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:218)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:430)
javax.servlet.http.HttpServlet.service(HttpServlet.java:767)
javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
[/code]

Por favor, me ajudem! Abraço!

Sds,

Pablo

Oi

Einsamkeit, tu tem que verificar se na hora que tu faz o deploy se os JARs estão indo para o WEB-INF/lib

T+

Então cara, mas como eu posso estar verificando isso? :cry: Me dá os passos por favor… Valeu!

Sds.

Pablo Alves

abre o arquivo war usando o winzip para ver se eles estao lá

pega o .war, descompacta e vai na pasta WEB-INF/lib e verifica se os libs estão la.

Pois é galera, mas minha app está aberta. Estou executando ela com as estrutura de diretórios desempacotada… É preciso ter a app em um .war ou .jar para usar as classes do hibernate em uma aplicação web com o tomcat? :roll: Com minha estrutura aberta os jars do hibernate não estão no WEB-INF/lib… Mas estão no Build Path do projeto. Valeu!

Att.

Pablo Alves

pois se os libs não estão dentro de WEB-INF/lib coloca eles la, e vê se da certo

Valeu pessoal. Pondo todos os pacotes em lib realmente funcionou. Agora estou com outra dúvida enquanto a utilização do hibernate. Estou recuperando um ArrayList de objetos conforme código abaixo:

Tenho dois objetos: Acao e Evento. A relação é uma Ação para muitos Eventos. Consigo persistir objetos do tipo Acao numa boa. O problema está sendo na hora de recuperar os mesmos. O Hibernate está cobrando um relacionamento entre Acao e Evento… Mas uma Acao naum necessita ter obrigatóriamente um Evento.

        List listaAcoes = new ArrayList();
        HibernateModel model = new HibernateModel(); // objeto para fazer    // a persistência
        
        try {
            model.openSession();
            listaAcoes = model.getSession().find( "from Acao as acao" );
            
            request.setAttribute( "listaAcoes", listaAcoes );
            
            model.close();
        }
        catch ( HibernateException ex ) {
            System.out.println( ex.getMessage() );
            ex.printStackTrace();
        }
        
        return ( map.findForward( "sucess" ) );

Só que tenho a seguinte exception:

Hibernate: select acao0_.cd_acao as cd_acao, acao0_.desc_acao as desc_acao from acao acao0_
exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of br.com.furb.mvclego.Acao.setEvento
net.sf.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of br.com.furb.mvclego.Acao.setEvento
	at net.sf.hibernate.persister.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:220)
	at net.sf.hibernate.impl.SessionImpl.initializeEntity(SessionImpl.java:2224)
	at net.sf.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:319)
	at net.sf.hibernate.loader.Loader.doQuery(Loader.java:309)
	at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:138)
	at net.sf.hibernate.loader.Loader.doList(Loader.java:1063)
	at net.sf.hibernate.loader.Loader.list(Loader.java:1054)
	at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1554)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1531)
	at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1523)
	at br.com.furb.mvclego.struts.ActionListarAcoes.execute(ActionListarAcoes.java:41)
	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:412)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:747)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:595)
Caused by: net.sf.cglib.beans.BulkBeanException: net.sf.hibernate.collection.Set
	at br.com.furb.mvclego.Acao$$BulkBeanByCGLIB$$73616f25.setPropertyValues(<generated>)
	at net.sf.hibernate.persister.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:215)
	... 41 more
Caused by: java.lang.ClassCastException: net.sf.hibernate.collection.Set
	... 43 more

Os dois descritores dos objetos persistentes:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="br.com.furb.mvclego.Acao" table="acao"> <id name="id" column="cd_acao" type="int"> <generator class="native" /> </id> <property name="descricao" column="desc_acao" type="string" not-null="true" /> <set name="evento" cascade="none" lazy="true"> <key column="cd_acao" /> <one-to-many class="br.com.furb.mvclego.Evento" /> </set> </class> </hibernate-mapping>

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="br.com.furb.mvclego.Evento" table="evento"> <id name="id" column="cd_evento" type="int"> <generator class="native" /> </id> <property name="data" column="dt_evento" type="timestamp" not-null="true" /> <property name="estado" column="estado" type="string" not-null="true" /> <many-to-one name="acao" column="cd_acao" class="br.com.furb.mvclego.Acao" cascade="none" /> </class> </hibernate-mapping>

Valeu pessoal!!!

Att.

Pablo Alves