JSF não starta aplicação

Olá, após assistir o mini curso do pessoal da Globalcode sobre JSF, muito bom por sinal, estou tentando fazer um simples Hello Word mas a aplicação não starta pelo manager do Tomcat 6:

Meu xeb.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <context-param>             
    <param-name>com.sun.faces.verifyObjects</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>com.sun.faces.validateXml</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
  </context-param>
  <context-param>
    <param-name>facelets.DEVELOPMENT</param-name>
    <param-value>false</param-value>
  </context-param>
  <context-param>
    <param-name>facelets.SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
  </context-param>
  <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>*.jsf</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>
      30
    </session-timeout>
  </session-config>
  <welcome-file-list>
    <welcome-file>
      index.jsp
    </welcome-file>
  </welcome-file-list>
  <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  </listener>
  <filter>      
    <display-name>Ajax4jsf Filter</display-name>
    <filter-name>ajax4jsf</filter-name>
    <filter-class>org.ajax4jsf.Filter</filter-class>
  </filter>   
  <filter-mapping>
    <filter-name>ajax4jsf</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
  </filter-mapping>  
</web-app>

E o facesconfig.xml:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" 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">
  <application>
    <view-handler>
      com.sun.facelets.FaceletViewHandler
    </view-handler>
  </application>
  
  <managed-bean>
    <managed-bean-name>
      olaMundoMB
    </managed-bean-name>
    <managed-bean-class>
      br.com.pedrosa.controlador.OlaMundoMB
    </managed-bean-class>
    <managed-bean-scope>
      request
    </managed-bean-scope>
  </managed-bean>
  <managed-bean>
    <managed-bean-name>associado</managed-bean-name>
    <managed-bean-class>br.com.pedrosa.controlador.AssociadoController</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
  </managed-bean>
  <converter>
    <converter-for-class>br.com.pedrosa.model.Associado</converter-for-class>
    <converter-class>br.com.pedrosa.controlador.AssociadoConverter</converter-class>
  </converter>
  <navigation-rule>
    <navigation-case>
      <from-outcome>associados</from-outcome>
      <to-view-id>/associados.xhtml</to-view-id>
    </navigation-case>
  </navigation-rule>
</faces-config>

O classpath esta configurado certinho, alguém tem ideia do pode estar acontecendo?

Cola o log de erros no post que fica mais fácil ajudar.

Comentei um trecho do web.xml

<listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  </listener>
  <filter>
        
    <display-name>Ajax4jsf Filter</display-name>
    <filter-name>ajax4jsf</filter-name>
    <filter-class>org.ajax4jsf.Filter</filter-class>
  </filter>   
  <filter-mapping>
    <filter-name>ajax4jsf</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
  </filter-mapping>

e a aplicação startou porém esta dando null pointer

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: Servlet.init() for servlet Faces Servlet threw exception
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
	java.lang.Thread.run(Thread.java:619)

root cause

java.lang.NullPointerException
	javax.faces.webapp.FacesServlet.init(FacesServlet.java:144)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
	org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
	java.lang.Thread.run(Thread.java:619)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.
Apache Tomcat/6.0.10

A codigo da pagina é esse:

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

<tags 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">
  <f:subview>
    <h:messages errorStyle="color: red" infoStyle="color: green" layout="table">
      <h:message />
    </h:messages>
    
    <h:form id="NovoAssociado">
      <h:panelGrid columns="2">
        <h:outputText value="Nome:"/>
        <h:inputText id="nomeAssociado" value="#{associado.associado.nomeAssociado}" title="NomeAssociado" />
        
        <h:outputText value="Email:"/>
        <h:inputText id="email" value="#{associado.associado.email}" title="Email" />
        
        <h:outputText value="Senha:"/>
        <h:inputText id="senha" value="#{associado.associado.senha}" title="Senha" />
        
        <h:outputText value="Cidade:"/>
        <h:inputText id="cidade" value="#{associado.associado.cidade}" title="Cidade" />
        
        <h:outputText value="Estado:"/>
        <h:inputText id="estado" value="#{associado.associado.estado}" title="Estado" />
        
      </h:panelGrid>
      
      <h:commandButton  action="#{associado.create}" id="commandCreate" value="Salvar"/>
      <br/>
      <h:commandLink action="associado_list" value="Show All Associado"/>
    </h:form>
  </f:subview>
  
</tags>

Suspeito que seja falta de algum jar, mais quais realmente são obrigatórios?

Você está usando o Myfaces?

Eu estou utilizando o JSF RI e uso o seguinte listener:

	&lt;listener&gt;
		&lt;listener-class&gt;
			com.sun.faces.config.ConfigureListener
		&lt;/listener-class&gt;
	&lt;/listener&gt;    
	&lt;servlet&gt;

Sim o projeto usa myfaces, o problema é que o exemplo é gerado pelos wizards no NB para JBoss e eu fiz na unha pelo Eclipse para descobrir as depedências e testar no Tomcat, pois não estou rodando EJB.

Passos Sugeridos:

  • Criar biblioteca Hibernate no Netbeans
  • Criar banco de dados no MySQL e tabela conforme comando
    apresentado;
  • Dentro do NetBeans vá no menu Tools -> Library Manager em seguida
    clique em New Library, com nome Hibernate.
  • Clique em Add Jar/Folder? e escolha os seguintes JARs no diretório
    onde está instalado o Hibernate Entity Manager.
  • Escolha os JARS hibernate-entitymanager.jar, lib\ejb3-persistence.jar e
    lib\hibernate-annotations.jar.

Tenho todos os jars do Hibernate e JPA e os do JSF utilizo esses:

ajax4jsf-1.1.0.jar
commons-fileupload-1.0.jar
el-api.jar,el-ri.jar
oscache-2.3.2.jar
richfaces-3.0.0.jar
tomahawk-1.1.3.jar
jsf-impl.jar
jsf-api.jar

Ou seja o exemplo esta incompleto, de acordo com web.xm original eu ainda necessito dos jars do myfaces?, mas quais são eles?

Após adicionar os jars do myfaces e suas depedencias, consigo startar com web.xml original porém ao acessar a página o erro já e outro:

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: Servlet execution threw an exception
	org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
	org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)

root cause

java.lang.NoSuchMethodError: javax.faces.application.ViewHandler.initView(Ljavax/faces/context/FacesContext;)V
	org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:61)
	org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
	org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
	org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
	org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.
Apache Tomcat/6.0.10

Porr… mais depedencias, estou baixando o facelets talvez resolva mais 2 jars e um tld, aff que saga.

http://www.thearcmind.com/confluence/display/SHJFT/Getting+started+with+JSF,+Facelets,+Eclipse+WTP+and+Tomcat

Eu aconselho o seguinte, já que você está começando agora, começando com um helloWorld, não precisa querer inserir tudo de uma unica vez em um projeto

Pelo que eu pude perceber, seu projeto tem o MyFaces, Tomahawk, Facelets, Ajax4JSF, Richfaces…

Começa pelo inicio.
Tenta implementar um Hello World usando apenas a implementação do JSF (seja JSF RI, MyFaces, ADF…), depois adicione o tomahawk e assim vai.

E aconselho também, agora no começo não utilizar esses wizards de NB, Eclipse, etc, crie na mão os arquivos para você compreender legal.