Erro ao criar a instância para·a classe: managedBean.CategoriaBean

Bom pessoal estou com um problema meio confuso porque para mim esta tudo CORRETO!!!.. eu não sei mais oque fazer! vou postar o Caused By e meus codigos…

java.lang.NullPointerException
	DAO.DAO.listar(DAO.java:74)
	managedBean.CategoriaBean.<init>(CategoriaBean.java:22)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	java.lang.Class.newInstance0(Class.java:355)
	java.lang.Class.newInstance(Class.java:308)
	com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
	com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
	com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
	com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
	com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
	com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
	com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:69)
	org.apache.el.parser.AstValue.getValue(AstValue.java:112)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	javax.faces.component.UIOutput.getValue(UIOutput.java:169)
	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
	com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
	com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
	org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
	org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
	org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
	org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

MEU BEAN

@ManagedBean
@ViewScoped
public class CategoriaBean {

    private Categoria categoria;
    private InterfaceDAO dao;
    private DataModel categorias;

    public CategoriaBean() {
        categoria = new Categoria();
        dao = new DAO();
        categorias = new ListDataModel(dao.listar("From Categoria"));
    }

    public String gravar() {
        if (categoria.getId() == null) {
            dao.gravar(categoria);
        } else {
            dao.alterar(categoria);
        }
        return "categoria";
    }

    public String deletar() {
        dao.deletar(categoria);
        return "categoria";
    }

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

    public DataModel getCategorias() {
        return categorias;
    }
}

MEU DAO


public class DAO implements InterfaceDAO {

    private EntityManager em;

    public void gravar(Object obj) {
        try {
            em = JPAUtil.getInstance();
            em.getTransaction().begin();
            em.persist(obj);
            em.getTransaction().commit();
        } catch (Exception e) {
            em.getTransaction().rollback();
            e.printStackTrace();
        } finally {
            em.close();
        }
    }

    public void alterar(Object obj) {
        try {
            em = JPAUtil.getInstance();
            em.getTransaction().begin();
            em.merge(obj);
            em.getTransaction().commit();
        } catch (Exception e) {
            em.getTransaction().rollback();
            e.printStackTrace();
        } finally {
            em.close();
        }
    }

    public void deletar(Object obj) {
        try {
            em = JPAUtil.getInstance();
            em.getTransaction().begin();
            em.remove(em.merge(obj));
            em.getTransaction().commit();
        } catch (Exception e) {
            em.getTransaction().rollback();
            e.printStackTrace();
        } finally {
            em.close();
        }
    }

    public Object procurar(String consulta) {
        Object object = null;
        try {
            em = JPAUtil.getInstance();
            object = em.createQuery(consulta).getSingleResult();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            em.close();
        }
        return object;
    }

    public List listar(String consulta) {
        List lista = null;
        try {
            em = JPAUtil.getInstance();
            lista = em.createQuery(consulta).getResultList();
        } catch (Exception e) {
            e.printStackTrace();
        
        } finally {
           em.close();
        }
        return lista;
    }
}

E FINALMENTE MEU JPAUTIL

[code]

public class JPAUtil {

private static final EntityManagerFactory factory;
private static EntityManager em;

static {
    try {
        factory = Persistence.createEntityManagerFactory("CursoJavaPU");
    } catch (Throwable t) {
        throw new ExceptionInInitializerError(t);
    }

}

public static EntityManager getInstance() {
    if (em != null) {
        em = factory.createEntityManager();
        return em;
    } else {
        em = (EntityManager) new JPAUtil();
        return em;
    }

}

}[/code]

ALGUEM SABE OQUE PODE SER??

seu JPAUtil ta com defeito… ahuahus

    public class JPAUtil {  
      
        private static final EntityManagerFactory factory;  
        private static EntityManager em;  
      
        static {  
            try {  
                factory = Persistence.createEntityManagerFactory(&quot;CursoJavaPU&quot;);  
            } catch (Throwable t) {  
                throw new ExceptionInInitializerError(t);  
            }  
      
        }  
      
        public static EntityManager getInstance() {  
            if (em != null) {  
                em = factory.createEntityManager();  
                return em;  
            } else {  
                em = (EntityManager) new JPAUtil();  /// &lt;-- [b]Acho que esse casting non funfa![/b]
                return em;  
            }  
      
        }  
    }  

Eu faria assim:

    public class abstract JPAUtil {  // [b]abstract (desnecessário)[/b]
      
        private static final EntityManagerFactory factory;  
        private static EntityManager em;  
      
        static {  
            try {  
                factory = Persistence.createEntityManagerFactory(&quot;CursoJavaPU&quot;);  
            } catch (Throwable t) {  
                throw new ExceptionInInitializerError(t);  
            }  
      
        }  
      
        public static EntityManager getInstance() {  
            if (em == null)
                em = factory.createEntityManager();  
            return em;  
        }
        
        // DESNECESSARIO TBM
        private JPAUtil() {
        }
    }  

**edit: só agora percebi que não dá pra por tags dentro de tags!

Boa sorte amigo! Espero que ajude.

uhahuauha vou testar =D

cara nao deu certo nao!

seu DAO está no pacote DAO

DAO.DAO.listar(DAO.java:74) ?

sim

Pacote DAO classe DAO metodo listar… creio que meu em = JPAUtil.getInstance(); esteja retornando null!

[quote=nepsterbr]sim

Pacote DAO classe DAO metodo listar… creio que meu em = JPAUtil.getInstance(); esteja retornando null![/quote]

Loga essa em apos essa, linha. Veja se realmente o em está nulo!

se não está nulo provavel que em.createQuery(consulta) não esteja retornando a Query…

lista = em.createQuery(consulta).getResultList(); 

mandei imprimir JPAUtil.getInstance(); e não me retornou nada… quando eu comento esta linha a aplicação instarta porem não lista e nem salva…

Se você MANDAR o seu programa fazer:

System.err.println(JPAUtil.getInstance());

Algo deve ser impresso, senão não está chegando nem nesse ponto! Sabes debugar? Usa eclipse ou netbeans?

netbeans … Debugar sei sim! mais não sei o proposito, sou iniciante :S

seguinte, depurar o código você …
basicamente pode ver o código em execução mas pode pausá-lo e executá-lo passo a passo.

procure saber como colocar um breakpoint ou melhor marque um breakpoint para a exceção nullpointerexception (que é um problema GERALMENTE de culpa sua) e veja o que está causando isso.

ps: na verdade, os caras mesmo dizem que temos mesmo é que logar (logging) ao invés de debugar.

ta vou tentar aqui

eu fiz um breakpoint onde tudo começa no meu controlador na linha

        categorias = new ListDataModel(dao.listar("From Categoria"));

e ta falando que ela tem o value null… você tem ideia do que pode ser

passe o cursor por cima de cada uma dos objetos e veja qual tem o valor null… e poste aqui.

ta falando que o EntityManaged em - a variavel em é null

então onde teu em é criado (naquela fábrica) tá o problema, coloque o break point la