Java.lang.RuntimeException: Cannot find FacesContext

Galera é o meu 1º projeto com JSF, NetBeans e TomCat.

Qdo tendo executar o projeto tenho seguinte erro:

java.lang.RuntimeException: Cannot find FacesContext at javax.faces.webapp.UIComponentClassicTagBase.getFacesContext(UIComponentClassicTagBase.java:1811) at javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1628) at org.apache.jsp.welcomeJSF_jsp._jspx_meth_f_005fview_005f0(welcomeJSF_jsp.java:108) at org.apache.jsp.welcomeJSF_jsp._jspService(welcomeJSF_jsp.java:83) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619)

Tentei as alternativas que fora descritas e vários outros tópicos mas infelizmente não resolveu o problema.

Olhem meu web.xml:

[code]<?xml version="1.0" encoding="UTF-8"?>


com.sun.faces.verifyObjects
false


com.sun.faces.validateXml
true


javax.faces.STATE_SAVING_METHOD
client

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>

<welcome-file-list>
    <welcome-file>welcomeJSF.jsp</welcome-file>
</welcome-file-list>

[/code]

O faces-config.xml:

[code]<?xml version='1.0' encoding='UTF-8'?>

<managed-bean>
    <managed-bean-name>loginBean</managed-bean-name>
    <managed-bean-class>exemplo.LoginBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
    <from-view-id>/welcomeJSF.jsp</from-view-id>
<navigation-case>
<from-outcome>autorizado</from-outcome>
<to-view-id>/autenticado.jsp</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>

[/code]

Vlw!!!

Fiz uns testes tirando as tags do JSF do meu JSP e funcionou.

Só que preciso utilizar as tags do JSF.

Segue a página JSP:

[code]<%@page contentType=“text/html” pageEncoding=“UTF-8” %>

<%@taglib prefix=“f” uri=“http://java.sun.com/jsf/core” %>
<%@taglib prefix=“h” uri=“http://java.sun.com/jsf/html” %>

<%–
This file is an entry point for JavaServer Faces application.
–%>




[/code]

Flw!!

Acompanhei este tutorial:

http://paulojdev.wordpress.com/2008/06/02/iniciando-em-jsf-com-netbeans/

Porém não funciona…

Após consultar muitos fóruns… não cheguei a resposta alguma…

Mas finalmente consegui descobrir o problema…

São as libs jsf-api e jsf-impl… pois no Eclipse nós definimos que o projeto seria um JSF 1.2 só que as libs que estava utilizando são da versão 2.0…

entrei no site (http://java.sun.com/javaee/javaserverfaces/download.html)

baixei a versão JavaServer Faces Technology 1.2

copiei os arquivos libs jsf-api e jsf-impl e substitui no meu projeto…

Agora funcionou.

Descobri isso graças a este tutorial para iniciantes http://www.guj.com.br/posts/list/126668.java e graças ao Eclipse pois quando fui criar uma biblioteca de usuário pra não ficar importando estes jars toda hora dai o Eclipse falou das versões que eram incompatíveis… do projeto (1.2) e dos jars (2.0)
=]
Espero ter ajudando quem como eu passou horas e horas procurando uma solução…

[b]Passei pelo mesmo problema … fiquei horas senão um dia vendo as dicas e nada.

Mas no meu caso resolvi mudando a referência do forward.

No netbeans ele cria um forwardToJSF.jsp (perto do welcomeJSF.jsp) … pelo que sei essa action é a responsável por redirecionar páginas (ou algo parecido com isso).

Nele há o atributo page que deve observar se está apontando para a página que você quer executar no browser … as vezes o valor do page está para o próprio forward ou o welcome,logo é só substituir esse valor pelo nome da pagina que você quer.

Exemplo :

<jsp:forward [color=red]page=“NomeDaSuaPagina.faces”[/color] > [/b]