[RESOLVIDO] JSF 2.0 Erro no hibernate 3.6!

4 respostas
J

Estou fazendo um projeto, mas na hora que eu clico no botão "Cadastrar" o console da erro.

Abaixo segue o projeto.

[color=red]Página .xhtml[/color]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui" >
	
<ui:composition template="/index.xhtml">

  <ui:define name="teste">
	<h:form>
	 <h:messages showSummary="true"></h:messages>

	<h:panelGrid columns="2">
		<h:outputText value="Nome:" /> 
		<p:inputText id="nome" value="#{usuarioBean.usuario.nome}"/>
		
		<h:outputText value="Usuario: "/> 
		<p:inputText id="usuario" value="#{usuarioBean.usuario.usuario}"/>
		
		<h:outputText value="Senha: "/> 
		<p:password minLength="8" id="senha" value="#{usuarioBean.usuario.senha}" />
		
		<h:outputText value="Repita a Senha: "/> 
		<p:password minLength="8" id="repitasenha" value="#{usuarioBean.usuario.repitaSenha}"/>
		
		<h:outputText value="Perfil: " /> 
		<p:inputText value="#{usuarioBean.usuario.perfil}"/>
		
		<h:outputText value="Operação: " /> 
		<p:inputText value="#{usuarioBean.usuario.operacao}"/>
		
		<h:outputText value="E-mail: " /> 
		<p:inputText id="email" value="#{usuarioBean.usuario.email}"/>
		
		<h:outputText value="Retipa o E-mail: "/> 
		<p:inputText id="repitaemail" value="#{usuarioBean.usuario.repitaEmail}"/>
		
		
		
	</h:panelGrid>	
		
		<h:commandButton value="Cadastrar" actionListener="#{usuarioBean.salvarUsuario}" />
		<p:button value="Cancelar"/>
		
	
	</h:form>

</ui:define>
</ui:composition>

</html>

[color=red]BEAN[/color]

public class UsuarioBean implements Serializable
{
	
	private static final long serialVersionUID = 1L;
	private Usuario usuario;
	private List usuarios = new ArrayList();
	private UsuarioDAO dao = new UsuarioDaoImpl();
	
	
	//Método Construtor
	public UsuarioBean() {
		usuario = new Usuario();
	}
	
	//Salva o Objeto no Banco
	public void salvarUsuario(ActionEvent event) 
	{
		
		try{
			UsuarioLogic logic = new UsuarioLogicImpl(DAOFactory.getDAOFactory().getUsuarioDAO());
			logic.salvarUsuario(usuario);
			
			
			
		}catch(UsuarioException e){
			e.getMessage();
			
		}
		
	}
	
	//Getter and Setters
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	
	public List getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List usuarios) {
		this.usuarios = usuarios;
	}

	public UsuarioDAO getDao() {
		return dao;
	}
	public void setDao(UsuarioDAO dao) {
		this.dao = dao;
	}
	
	
	
}
[color=red]CLASSE UsuarioLogicImpl[/color]
public class UsuarioLogicImpl implements UsuarioLogic {

	
	private UsuarioDAO dao;
	
	public UsuarioLogicImpl(UsuarioDAO dao) {
		this.dao = dao;
	}
	
	@Override
	public void salvarUsuario(Usuario usuario) throws UsuarioException {
		if (usuario.getNome() == null || usuario.getNome().equals("")){
			throw new UsuarioException("O nome é obrigatório");
		}
		
		this.dao.salvarUsuario(usuario);
		
		
	}

Classe UsuarioDaoImpl

public class UsuarioDaoImpl implements UsuarioDAO

{


	@Override
	public Usuario buscarUsuarioPorId(Long id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Usuario> listarUsuarios() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void removerUsuario(Usuario usuario) {
		// TODO Auto-generated method stub

	}

	@Override
	public void salvarUsuario(Usuario usuario) throws UsuarioException {
		Session session = HibernateUtil.getSession();
		if (usuario.getCodUsuario() == 0 || usuario.getCodUsuario() == null) {
			session.save(usuario);
						
		} else {
			session.merge(usuario);
		}
		}

	
}
Classe HibernateDaoFactory
public class HibernateDAOFactory extends DAOFactory {

	@Override
	public UsuarioDAO getUsuarioDAO() {
		return new UsuarioDaoImpl();
	}
HibernateUtil
public class HibernateUtil {  

	private static final SessionFactory sessionFactory;  

	static {  
		try { 
			
			sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();  

		} catch (Throwable ex) {  
			// Log exception!  
			throw new ExceptionInInitializerError(ex);  
		}  
	}  

	public static Session getSession() throws HibernateException {  
		return sessionFactory.openSession();  
	}  
	
}
Hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/intrasur</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">15071991</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    	
    	<!-- Configurações de Pool de conexão do C3PO -->
		<property name="c3po.min_size" >5</property>
		<property name="c3po.max_size" >20</property>
		<property name="c3po.timeout" >300</property>
		<property name="c3po.max_statements" >50</property>
		<property name="c3po.idle_test_period" >3000</property>

		<!--Configurações de Debug -->
		<property   name="show_sql" >true</property>
		<property   name="format_sql" >true</property>
		<property   name="generate_statistics" >true</property>
		<property   name="use_sql_comments" >true</property>

		<!-- Drop and re-create the database schema on startup-->
		<property   name="hbm2ddl.auto" >update</property>

		<!--  Mapeamento das entidades -->
		<mapping class="com.unipac.model.Usuario" />
		
	</session-factory>
</hibernate-configuration>
ERRO DO CONSOLE
INFO: Server startup in 5651 ms
25/08/2011 01:04:42 javax.faces.event.MethodExpressionActionListener processAction
GRAVE: 'java.lang.NoClassDefFoundError' recebido ao invocar escuta de ação '#{usuarioBean.salvarUsuario}' para o componente 'j_idt18'
25/08/2011 01:04:42 javax.faces.event.MethodExpressionActionListener processAction
GRAVE: java.lang.NoClassDefFoundError: org/hibernate/Session
	at com.suporte.dao.impl.UsuarioDaoImpl.salvarUsuario(UsuarioDaoImpl.java:39)
	at com.suporte.logic.impl.UsuarioLogicImpl.salvarUsuario(UsuarioLogicImpl.java:25)
	at com.suporte.bean.UsuarioBean.salvarUsuario(UsuarioBean.java:40)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:777)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:851)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:278)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.hibernate.Session
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
	... 36 more

25/08/2011 01:04:42 com.sun.faces.context.ExceptionHandlerImpl log
GRAVE: JSF1073: javax.faces.event.AbortProcessingException obtido durante o processamento de INVOKE_APPLICATION 5: UIComponent-ClientId=j_idt14:j_idt18, Message=/cadastrarUsuario.xhtml @25,86 actionListener="#{usuarioBean.salvarUsuario}": java.lang.NoClassDefFoundError: org/hibernate/Session
25/08/2011 01:04:42 com.sun.faces.context.ExceptionHandlerImpl log
GRAVE: /cadastrarUsuario.xhtml @25,86 actionListener="#{usuarioBean.salvarUsuario}": java.lang.NoClassDefFoundError: org/hibernate/Session
javax.faces.event.AbortProcessingException: /cadastrarUsuario.xhtml @25,86 actionListener="#{usuarioBean.salvarUsuario}": java.lang.NoClassDefFoundError: org/hibernate/Session
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:777)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:851)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:278)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/Session
	at com.suporte.dao.impl.UsuarioDaoImpl.salvarUsuario(UsuarioDaoImpl.java:39)
	at com.suporte.logic.impl.UsuarioLogicImpl.salvarUsuario(UsuarioLogicImpl.java:25)
	at com.suporte.bean.UsuarioBean.salvarUsuario(UsuarioBean.java:40)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:148)
	... 25 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.Session
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
	... 36 more

4 Respostas

R
java.lang.NoClassDefFoundError: org/hibernate/Session

jars faltando

ivansalvadori

Jonatex, pq receber ActionEvent no salvar?

public void salvarUsuario(ActionEvent event)

vc nao esta usando o event em lugar nenhum…

não poderia ser simplesmente public void salvarUsuario() ?

J

Estou utilizando as seguintes bibliotecas no meu projeto.


antlr-2.7.6.jar
c3p0-0.9.1.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate3.jar
javassist-3.9.0.GA.jar
jstl.jar
jta-1.1.jar
slf4j-simple-1.6.0.jar
slf4j-api-1.6.0.jar
starndar.jar

J

Galera, consegui resolver o problema.
Coloque todas as suas bibliotecas do Hibernate dentro de Web-Content > WEB-INF> lib.

Modifique o código do UsuarioDaoImpl (Responsável por persistir no Banco)
O código ficará desta maneira:

public void salvarUsuario(Usuario usuario) throws UsuarioException {
		Session session = HibernateUtil.getSession();
		Transaction t = session.beginTransaction();	
		
		if (usuario.getNome() != null) {
			session.save(usuario);
			t.commit();
			session.close();
						
		} else {
			session.merge(usuario);
		}
		}
Criado 24 de agosto de 2011
Ultima resposta 25 de ago. de 2011
Respostas 4
Participantes 3