Nullpointer ao inserir no banco

Bom dia a todos!

Estou tentando criar um projeto para aprendizado com hibernate e JSF.

Estou com problema quando vou adicionar um novo registro pela página jsf
já tentei muita coisa, mas ainda não consegui, quem puder dar uma ajuda ai valeu

ele retorna este erro:

java.lang.NullPointerException
	at java.lang.Class.isAssignableFrom(Native Method)
	at org.apache.el.util.ReflectionUtil.isAssignableFrom(ReflectionUtil.java:319)
	at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:185)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:257)
	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:769)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	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:409)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

Eu li que pode ser problema de lib, por ex. usar EL (da apache) ou outra coisa assim incompativel com tomcat ou primefaces
mas como seria por exemplo EL da apache compativel com tomcat? …

Somente com esse erro fica muito genérico,
cola sua pagina xhtml, seu managedBean para
tentar visualizar.

Opa, blz

xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Changes</title>
    </h:head>
    <h:body>
        <center><h1>Changes</h1></center><br/>
        <h:form prependId="false">
                          
            <h:outputLabel for="nr_change" value="Nr. Change: " />
            <h:inputText id="nr_change" value="#{changesController.changes.nr_change}"/><br/>  
            
            <h:outputLabel for="cliente" value="Cliente: " />
            <h:inputText id="cliente" value="#{changesController.changes.cliente}"/><br/> 
            
            <h:outputLabel for="status" value="Status: " />
            <h:inputText id="status" value="#{changesController.changes.status}"/><br/> 
            
            <h:outputLabel for="tipo_atv" value="Tipo atividade: " />
            <h:inputText id="tipo_atv" value="#{changesController.changes.tipo_atv}"/><br/>  
            
            <h:outputLabel for="inst" value="Inst: " />
            <h:inputText id="inst" value="#{changesController.changes.inst}"/><br/>  
            
            <h:outputLabel for="descricao" value="Descrição: " />
            <h:inputText id="descricao" value="#{changesController.changes.descricao}"/><br/>  
            
            <h:outputLabel for="usuario_create" value="Criado por: " />
            <h:inputText id="usuario_create" value="#{changesController.changes.usuario_create}"/><br/>   
            
            <h:outputLabel for="feedback" value="Feedback: " />
            <h:inputText id="feedback" value="#{changesController.changes.feedback}"/><br/>
            
            <h:commandButton value="Salva" id="salva" actionListener="#{changesController.adicionar(actionEvent)}"/>         
             
            <h:dataTable value="#{changesController.listaChanges}" var="changes">
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Nr. Change"/>
                    </f:facet>
                    <h:outputText value="#{changes.nr_change}"/>
                </h:column>
                
                 <h:column>
                    <f:facet name="header">
                        <h:outputText value="Cliente"/>
                    </f:facet>
                    <h:outputText value="#{changes.cliente}"/>
                </h:column>
                
                 <h:column>
                    <f:facet name="header">
                        <h:outputText value="Status"/>
                    </f:facet>
                    <h:outputText value="#{changes.status}"/>
                </h:column>
            
            </h:dataTable>
        </h:form>
    </h:body>
</html>

managedbean

import br.com.changes.dao.ChangesDao;
import br.com.changes.dao.InterfaceChanges;
import br.com.changes.model.Changes;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;


@ManagedBean
@SessionScoped
public class ChangesController {
    
    private Changes changes;
    private DataModel listaChanges;
    
     public DataModel getListaChanges() {
        List<Changes> lista = new ChangesDao().list();
        listaChanges = new ListDataModel(lista);
        return listaChanges;
    }

    public Changes getChanges() {
        if(this.changes==null){
            this.changes = new Changes();
        }
        return changes;
    }

    public void setChanges(Changes changes) {
        this.changes = changes;
    }

      
    public void prepararAdicionarChange(ActionEvent actionEvent){
        changes = new Changes();
    }
    
    public void prepararAlterarChange(ActionEvent actionEvent){
        changes = (Changes)(listaChanges.getRowData());
    }
    
    public void adicionar(ActionEvent actionEvent){
             
        InterfaceChanges dao = new ChangesDao();
        dao.salvar(changes);
        
    }
    
    public void alterar(ActionEvent actionEvent){
        InterfaceChanges dao = new ChangesDao();
        dao.atualizar(changes);
    }
    
    public String excluir(){
        Changes change = (Changes)(listaChanges.getRowData());
        InterfaceChanges dao = new ChangesDao();
        dao.remover(change);
        return "index";
    }
    
}
 <h:commandButton value="Salva" id="salva" actionListener="#{changesController.adicionar(actionEvent)}"/>    

pode substituir por

 <h:commandButton value="Salva" id="salva" action="#{changesController.adicionar}" process="@form" update="@form"/>    

nao precisas nem usar o actionListener, nao estas nem utilizando o
parametro enviado para o bean

  public void adicionar(ActionEvent actionEvent){  
           //perceba que vc nao usou o actionEvent para nada.
        InterfaceChanges dao = new ChangesDao();  
        dao.salvar(changes);  
          
    }  

hmm…ele da erro no xhtml… q estranho… da erro no <?xml version

Error Parsing /index.xhtml: Error Traced[line: 1] The processing instruction target matching “[xX][mM][lL]” is not allowed.

javax.faces.view.facelets.FaceletException: Error Parsing /index.xhtml: Error Traced[line: 1] The processing instruction target matching "[xX][mM][lL]" is not allowed.
	at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:425)
	at com.sun.faces.facelets.compiler.SAXCompiler.doMetadataCompile(SAXCompiler.java:408)
	at com.sun.faces.facelets.compiler.Compiler.metadataCompile(Compiler.java:130)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.createMetadataFacelet(DefaultFaceletFactory.java:327)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$200(DefaultFaceletFactory.java:93)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:166)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory$2.newInstance(DefaultFaceletFactory.java:164)
	at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:94)
	at com.sun.faces.facelets.impl.DefaultFaceletCache$2.newInstance(DefaultFaceletCache.java:89)
	at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at com.sun.faces.util.ExpiringConcurrentCache.get(ExpiringConcurrentCache.java:114)
	at com.sun.faces.facelets.impl.DefaultFaceletCache.getViewMetadataFacelet(DefaultFaceletCache.java:143)
	at com.sun.faces.facelets.impl.DefaultFaceletCache.getViewMetadataFacelet(DefaultFaceletCache.java:62)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:260)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.getMetadataFacelet(DefaultFaceletFactory.java:209)
	at com.sun.faces.application.view.ViewMetadataImpl.createMetadataView(ViewMetadataImpl.java:114)
	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:233)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

qual a versão do jar do JSF que estás utilizando?

Tente o seguinte:

<h:commandButton value="Salva" id="salva" action="#{changesController.adicionar}"/>      

E no seu bean:

public void adicionar(){
      InterfaceChanges dao = new ChangesDao();    
      dao.salvar(changes);       
}  

Caso não dê certo, debugue e veja o que você está passando no changes e veja se o seu dao está sendo instanciado corretamente.

[quote=kcobainnn]Tente o seguinte:

<h:commandButton value="Salva" id="salva" action="#{changesController.adicionar}"/>      

E no seu bean:

public void adicionar(){
      InterfaceChanges dao = new ChangesDao();    
      dao.salvar(changes);       
}  

Caso não dê certo, debugue e veja o que você está passando no changes e veja se o seu dao está sendo instanciado corretamente.[/quote]

Será q vc não repetiu o que eu falei acima?

[quote=kleberdamasco][quote=kcobainnn]Tente o seguinte:

<h:commandButton value="Salva" id="salva" action="#{changesController.adicionar}"/>      

E no seu bean:

public void adicionar(){
      InterfaceChanges dao = new ChangesDao();    
      dao.salvar(changes);       
}  

Caso não dê certo, debugue e veja o que você está passando no changes e veja se o seu dao está sendo instanciado corretamente.[/quote]

Será q vc não repetiu o que eu falei acima?[/quote]

Desculpe, mas acho que ele não entendeu a parte que ele deveria tirar o ActionEvent do parâmetro do método! E outra, acho que a melhor forma de descobrir é debugar p/ saber o que está passando na hora de gravar no banco! :?

Eu realmente tinha esquecido de tirar o ActionEvent, mas retirei e mesmo assim retorna o erro.

Agora estou no trabalho e não tem como fazer mais modificacoes e testes, mas de madrugada na hora q chegar em casa eu tento mais pra ver se continua com o mesmo erro

Meu JSF é 2.1 eu acho

galera, valeu mesmo!

As correções estavam certas, porém tive que fazer uma coisa a mais pra funcionar.

criei um index.html com este código:

<meta http-equiv="REFRESH" content="0;url=index.jsf">

e no meu web.xml alterei de index.xhtml para index.html

<welcome-file>index.html</welcome-file>

Deu certo, não sei porque ainda! mas um dia eu descubro rs

valeu

ne verdade, no seu welcome-file, seria:

<welcome-file>index.jsf</welcome-file>  

assim ele redirecionaria direto p/ o seu xhtml, mas, era por causa disso o erro? :o