Java.lang.RuntimeException: Cannot find FacesContext

4 respostas
P

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:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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-app_2_5.xsd">
    <context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>false</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.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>

    <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>

</web-app>

O faces-config.xml:

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

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<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">

    <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>


</faces-config>

Vlw!!!

4 Respostas

P

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:

<%@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" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%--
    This file is an entry point for JavaServer Faces application.
--%>
<html>
    <f:view>
     <h:form id="formLogin">
    <h:messages />
    <br />
    <h:outputText value="Login" /><h:inputText value="#{loginBean.login}" />
    <br />
    <h:outputText value="Senha" /> <h:inputText value="#{loginBean.senha}" />
    <br />
    <h:commandButton action="#{loginBean.logar}" value="Logue-se" />
    </h:form>
    </f:view>
</html>

Flw!!

P

Acompanhei este tutorial:

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

Porém não funciona…

R

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…

M

[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]

Criado 22 de abril de 2010
Ultima resposta 21 de fev. de 2012
Respostas 4
Participantes 3