Olá pessoal,
Estou com uma grande dificuldade e rodar minha primeira aplicação que estou desenvolvendo com as tecnologias: JSF, Hibernate, Apache Tomcat.
Abaixo esta o erro(ocorre quando eu estou na página “http://localhost:8080/AppJsf_sistemaFinanceiro/menu.faces” e clico no link “Cadastro de contas” que deve me direcionar para a página “http://localhost:8080/AppJsf_sistemaFinanceiro/contas/cadastroConta.faces”) e também os códigos que eu acho que deve estar com erro:
Erro
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: /contas/cadastroConta.jsp(38,7) '#{cadastroContaBean.pessoas}' Error reading 'pessoas' on type appjsf_sistemafinanceiro.visao.CadastroContaBean
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
root cause
org.apache.jasper.el.JspELException: /contas/cadastroConta.jsp(38,7) '#{cadastroContaBean.pessoas}' Error reading 'pessoas' on type appjsf_sistemafinanceiro.visao.CadastroContaBean
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107)
javax.faces.component.UISelectItems.getValue(UISelectItems.java:141)
com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:283)
com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:783)
com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:864)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:244)
com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:236)
com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:236)
com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:180)
com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:127)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
root cause
java.lang.NoClassDefFoundError: Could not initialize class appjsf_sistemafinanceiro.util.HibernateUtil
appjsf_sistemafinanceiro.negocio.PessoaService.listarTodas(PessoaService.java:28)
appjsf_sistemafinanceiro.visao.CadastroContaBean.getPessoas(CadastroContaBean.java:64)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
javax.el.BeanELResolver.getValue(BeanELResolver.java:83)
com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:173)
com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:200)
org.apache.el.parser.AstValue.getValue(AstValue.java:123)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
javax.faces.component.UISelectItems.getValue(UISelectItems.java:141)
com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:283)
com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:783)
com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:864)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:244)
com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:236)
com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:106)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:236)
com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:180)
com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:127)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs.
menu.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="../css/estilo.css" />
<title>Sistema Financeiro</title>
</head>
<body>
<f:view>
<h:form id="frm">
<h1>
<h:outputText value="Sistema Financeiro"/>
</h1>
<h:commandLink action="#{cadastroContaBean.inicializar}">
<h:outputText value="Cadastro de contas"/>
</h:commandLink>
<br/>
<h:commandLink action="consultaConta" actionListener="#{consultaContaBean.consultar}">
<h:outputText value="Consulta de contas"/>
</h:commandLink>
</h:form>
</f:view>
</body>
</html>
cadastroConta.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<f:view>
<h:form id="frm">
<h1>
<h:outputText value="Cadastro de conta"/>
</h1>
<h:messages layout="table" showSummary="true" showDetail="false"
globalOnly="true" styleClass="msgErro" infoClass="msgInfo" style="font-weight: bold"/>
<h:panelGrid columns="2">
<h:panelGroup>
<h:outputLabel value="Codigo: " rendered="#{cadastroContaBean.contaEdicao.id != null}"/>
<h:panelGroup rendered="#{cadastroContaBean.contaEdicao.id != null}">
<h:inputText id="codigo" size="10" value="#{cadastroContaBean.contaEdicao.id}"
label="Codigo da conta" disabled="true"/>
<h:message for="codigo" showSummary="true" showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
</h:panelGroup>
<br />
<h:panelGroup>
<h:outputLabel value="Pessoa:"/>
<h:panelGroup>
<h:selectOneMenu id="pessoa" value="#{cadastroContaBean.contaEdicao.pessoa}" label="Pessoa" required="true">
<f:selectItems value="#{cadastroContaBean.pessoas}"/>
</h:selectOneMenu>
<h:message for="pessoa" showSummary="true" showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
</h:panelGroup>
<br />
<h:panelGroup>
<h:outputLabel value="Tipo:"/>
<h:panelGroup>
<h:selectOneRadio id="tipo" value="#{cadastroContaBean.contaEdicao.tipo}" label="Tipo da conta" required="true">
<f:selectItems value="#{cadastroContaBean.tiposLancamentos}"/>
</h:selectOneRadio>
<h:message for="tipo" showSummary="true" showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
</h:panelGroup>
<br />
<h:panelGroup>
<h:outputLabel value="Descricao:"/>
<h:panelGroup>
<h:inputText id="descricao" size="40" maxlength="150" value="#{cadastroContaBean.contaEdicao.descricao}"
required="true" label="Descricao"/>
<h:message for="descricao" showSummary="true" showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
</h:panelGroup>
<br />
<h:panelGroup>
<h:outputLabel value="Valor:"/>
<h:panelGroup>
<h:inputText id="valor" size="12" maxlength="10" value="#{cadastroContaBean.contaEdicao.valor}"
required="true" label="Valor">
<f:convertNumber minFractionDigits="2"/>
</h:inputText>
<h:message for="valor" showSummary="true" showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
</h:panelGroup>
<br />
<h:panelGroup>
<h:outputLabel value="Data vencimento:"/>
<h:panelGroup>
<h:inputText id="dataVencimento" size="12" maxlength="10"
value="#{cadastroContaBean.contaEdicao.dataVencimento}" required="true" label="Data vencimento">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:message for="dataVencimento" showSummary="true" showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
</h:panelGroup>
<br />
<h:panelGroup>
<h:outputLabel value="Data baixa:"/>
<h:panelGroup>
<h:inputText id="dataBaixa" size="12" maxlength="10"
value="#{cadastroContaBean.contaEdicao.dataBaixa}" label="Data baixa">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
<h:message for="dataBaixa" showSummary="true" showDetail="false" styleClass="msgErro"/>
</h:panelGroup>
</h:panelGroup>
<br />
<h:panelGroup/>
<h:panelGroup>
<h:commandButton value="Salvar" actionListener="#{cadastroContaBean.salvar}" styleClass="botao"/>
<h:commandButton value="Cancelar" action="menu" immediate="true" styleClass="botao"/>
</h:panelGroup>
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>
CadastroContaBean.java
package appjsf_sistemafinanceiro.visao;
import java.util.*;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import appjsf_sistemafinanceiro.dominio.Conta;
import appjsf_sistemafinanceiro.dominio.Pessoa;
import appjsf_sistemafinanceiro.dominio.TipoConta;
import appjsf_sistemafinanceiro.negocio.ContaService;
import appjsf_sistemafinanceiro.negocio.PessoaService;
import appjsf_sistemafinanceiro.negocio.RegraNegocioException;
public class CadastroContaBean {
private Conta contaEdicao;
private List<SelectItem> tiposContas;
private List<SelectItem> pessoas;
public String inicializar() {
this.contaEdicao = new Conta();
this.tiposContas = null;
this.pessoas = null;
return "cadastroConta";
}
public void salvar(ActionEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
try {
new ContaService().salvar(this.contaEdicao);
this.contaEdicao = new Conta();
FacesMessage msg = new FacesMessage("Conta salva com sucesso!");
msg.setSeverity(FacesMessage.SEVERITY_INFO);
context.addMessage(null, msg);
} catch (RegraNegocioException e) {
context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage()));
} catch (Exception e) {
e.printStackTrace();
FacesMessage msg = new FacesMessage( "Erro inesperado ao salvar conta!");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, msg);
}
}
public List<SelectItem> getPessoas() {
if (this.pessoas == null) {
this.pessoas = new ArrayList<SelectItem>();
List<Pessoa> pessoas = new PessoaService().listarTodas();
this.pessoas.add(new SelectItem(null, "Selecione"));
for (Pessoa pessoa : pessoas) {
this.pessoas.add(new SelectItem(pessoa, pessoa.getNome()));
}
}
return this.pessoas;
}
public List<SelectItem> getTiposLancamentos() {
if (this.tiposContas == null) {
this.tiposContas = new ArrayList<SelectItem>();
for (TipoConta tipo : TipoConta.values()) {
this.tiposContas.add(new SelectItem(tipo,tipo.toString()));
}
}
return tiposContas;
}
public Conta getContaEdicao() {
return contaEdicao;
}
public void setContaEdicao(Conta contaEdicao) {
this.contaEdicao = contaEdicao;
}
}
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
<converter>
<converter-for-class>java.lang.Enum</converter-for-class>
<converter-class>appjsf_sistemafinanceiro.conversores.EnumConverter</converter-class>
</converter>
<converter>
<converter-for-class>appjsf_sistemafinanceiro.dominio.Pessoa</converter-for-class>
<converter-class>appjsf_sistemafinanceiro.conversores.PessoaConverter</converter-class>
</converter>
<managed-bean>
<managed-bean-name>cadastroContaBean</managed-bean-name>
<managed-bean-class>appjsf_sistemafinanceiro.visao.CadastroContaBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>consultaContaBean</managed-bean-name>
<managed-bean-class>appjsf_sistemafinanceiro.visao.ConsultaContaBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<navigation-case>
<from-outcome>cadastroConta</from-outcome>
<to-view-id>/contas/cadastroConta.faces</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>consultaConta</from-outcome>
<to-view-id>/contas/consultaConta.faces</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-outcome>menu</from-outcome>
<to-view-id>/menu.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-outcome>menu</from-outcome>
<to-view-id>/menu.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
<application>
<message-bundle>appjsf_sistemafinanceiro.recursos.messages</message-bundle>
</application>
</faces-config>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>AppJsf_sistemaFinanceiro</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
<context-param>
<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
</web-app>
Já estou a um bom tempo procurando uma solucão mas não consigo encontrar.
Se alguém tiver alguma ideia pra meu problema e postar aqui eu agradeço.
