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?
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