problema com richfaces: java.lang.ClassNotFoundException: javax.faces.render.RenderKitFactory

375 views
Skip to first unread message

Lucas Moura

unread,
Mar 10, 2011, 9:39:56 AM3/10/11
to jav...@googlegroups.com
Olá pessoal,


Estou desenvolvendo minha primeira aplicação javaEE (com hibernate no tomcat) que utilize o Richfaces.

Fiz meu formulário normal utilizando somente hibernate e jsf puro e funcionou normal, pois fiz o deploy e cadastrei e fiz consultas. Mas quando adicionei as bibliotecas do richfaces e criei uma pagina .jsp com utilizando as tags richfaces não consegui nem dar o start da minha aplicação no Tomcat. Quando eu faço o deploy da minha aplicação e vou tentar acessar ela através do navegador da erro 404.

Abaixo esta as classes: web.xml, faces-config.xml, o erro de log do Tomcat(que é onde aparece o erro: Caused by: java.lang.ClassNotFoundException: javax.faces.render.RenderKitFactory), erro 404 no navegador e helloRich.jsp(é onde estou utilizando o richfaces).

Eu creio que o erro seja a falta mesmo desse RenderKitFactory, mas não achei na internet algo que fala-se dele.

Se alguém pode me ajudar eu agradeço. Obrigado


==========
web.xml
==========
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>AppJsf_sistemaFinanceiro</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <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>*.seam</url-pattern>
  </servlet-mapping>
  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
  <context-param>
      <param-name>org.richfaces.SKIN</param-name>
    <param-value>blueSky</param-value>
  </context-param>
  <context-param>
    <param-name>org.richfaces.CONTROL_SKINNING</param-name>
    <param-value>enable</param-value>
  </context-param>
  <filter>
    <display-name>RichFaces Filter</display-name>
    <filter-name>richfaces</filter-name>
    <filter-class>org.ajax4jsf.Filter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>richfaces</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
  </filter-mapping>
</web-app>


==========
faces-config.xml
==========
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 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">
 <converter>
  <converter-for-class>java.lang.Enum</converter-for-class>
  <converter-class>appjsf_sistemafinanceiro.conversores.EnumConverter</converter-class>
 </converter>
 <converter>
  <converter-for-class>appjsf_sistemafinanceiro.dominio.Pessoa</converter-for-class>
  <converter-class>appjsf_sistemafinanceiro.conversores.PessoaConverter</converter-class>
 </converter>
 <managed-bean>
  <managed-bean-name>cadastroContaBean</managed-bean-name>
  <managed-bean-class>appjsf_sistemafinanceiro.visao.CadastroContaBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>consultaContaBean</managed-bean-name>
  <managed-bean-class>appjsf_sistemafinanceiro.visao.ConsultaContaBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>helloRichBean</managed-bean-name>
  <managed-bean-class>appjsf_sistemafinanceiro.visao.HelloRichBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <navigation-rule>
  <navigation-case>
   <from-outcome>cadastroConta</from-outcome>
   <to-view-id>/contas/cadastroConta.faces</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>consultaConta</from-outcome>
   <to-view-id>/contas/consultaConta.faces</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <navigation-case>
   <from-outcome>menu</from-outcome>
   <to-view-id>/menu.jsp</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <navigation-case>
   <from-outcome>menu</from-outcome>
   <to-view-id>/menu.jsp</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 <application>
  <message-bundle>appjsf_sistemafinanceiro.recursos.messages</message-bundle>
 </application>
</faces-config>



==========
erro 404
==========

HTTP Status 404 -

type Status report

message

description The requested resource () is not available.
Apache Tomcat/6.0.32


==========
log do Tomcat
==========
09/03/2011 21:50:52 org.apache.catalina.core.StandardContext listenerStart
GRAVE
: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java
.lang.NoClassDefFoundError: javax/faces/render/RenderKitFactory
        at java
.lang.ClassLoader.defineClass1(Native Method)
        at java
.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java
.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java
.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java
.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java
.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java
.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java
.security.AccessController.doPrivileged(Native Method)
        at java
.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java
.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java
.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at org
.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1667)
        at org
.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
        at java
.lang.Class.forName0(Native Method)
        at java
.lang.Class.forName(Class.java:247)
        at javax
.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:514)
        at javax
.faces.FactoryFinder.getImplementationInstance(FactoryFinder.java:405)
        at javax
.faces.FactoryFinder.access$400(FactoryFinder.java:135)
        at javax
.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:717)
        at javax
.faces.FactoryFinder.getFactory(FactoryFinder.java:239)
        at com
.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:187)
        at com
.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:132)
        at com
.sun.faces.config.ConfigManager.initialize(ConfigManager.java:204)
        at com
.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:200)
        at org
.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
        at org
.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
        at org
.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1276)
        at org
.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:625)
        at org
.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:136)
        at javax
.servlet.http.HttpServlet.service(HttpServlet.java:617)
        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.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186)
        at org
.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        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.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
        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:859)
        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:680)
Caused by: java.lang.ClassNotFoundException: javax.faces.render.RenderKitFactory
        at java
.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java
.security.AccessController.doPrivileged(Native Method)
        at java
.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java
.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at java
.lang.ClassLoader.loadClass(ClassLoader.java:248)
       
... 47 more


============

helloRich.jsp

============
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>

<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>

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

<html>
       
<head>
               
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
               
<title>Insert title here</title>
       
</head>
       
<body>
               
<f:view>
                       
<h:form>
                               
<rich:panel header="Ola RichFaces" style="width: 300px">
                                       
<h:outputText value="Seu nome: " />
                                       
<h:inputText value="#{helloRichBean.nome}"/>
                                       
<a4j:commandButton value="Dizer ola" reRender="olaPainel" />
                                       
                                       
<h:panelGroup id="olaPainel" layout="block">
                                               
<h:outputText value="Ola, " rendered="#{not empty helloRichBean.nome}" />
                                               
<h:outputText value="#{helloRichBean.nome}" />
                                               
<h:outputText value="!" rendered="#{not empty helloRichBean.nome}" />
                                       
</h:panelGroup>
                               
</rich:panel>
                       
</h:form>
               
</f:view>
       
</body>
</html>




--
Lucas Bernardes de Moura

msn: luca...@hotmail.com
e-mail: luca...@gmail.com
cel: 61 8572 9651

Sérgio Fantin

unread,
Mar 10, 2011, 10:05:53 AM3/10/11
to jav...@googlegroups.com
Qual versão (1.2, 2.0)/implementação(Mojarra, MyFaces, ...) do JSF você tá usando?

Qual versão do RichFaces você tá usando?

Abraços...

2011/3/10 Lucas Moura <luca...@gmail.com>
--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Sérgio Fantin
http://serjaum.wordpress.com

Lucas Moura

unread,
Mar 10, 2011, 10:12:32 AM3/10/11
to jav...@googlegroups.com
Implementação Mojarra, versão 1.2 do JSF.

versão 3.3.3.Final do Richfaces.

Sérgio Fantin

unread,
Mar 10, 2011, 11:43:08 AM3/10/11
to jav...@googlegroups.com
Não é a versão mais atual, mas é só trocar pelos seus jars: http://serjaum.wordpress.com/2009/07/25/jsf-tutorial-richfaces/

richfaces-api-3.3.3.Final.jar
richfaces-impl-3.3.3.Final.jar
richfaces-ui-3.3.3.Final.jar

Lucas Moura

unread,
Mar 10, 2011, 2:05:51 PM3/10/11
to jav...@googlegroups.com
Sérgio, muito obrigado pela ajuda.
Eu já tinha a versão 3.3.3 do Richfaces, mas eu não estava com a última versão do JSF, que é a versão JSF 2.0.

Eu fui até o link que você me passou e achei muito bom, comparei os arquivos com os meus, e aparentemente estão na mesma lógica. Mas agora estou com outro problema, esta com erro quando tento acessar no browser(eu não alterei nenhuma linha de código da minha aplicação). Estou tentado procurar na net sobre essa mensagem mas não consigo achar nada sobre o mesmo.

Segue o erro:

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: Tentativa ilegal de definir ViewHandler depois de uma resposta ter sido renderizada.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

root cause

java.lang.IllegalStateException: Tentativa ilegal de definir ViewHandler depois de uma resposta ter sido renderizada.
com.sun.faces.application.ApplicationImpl.setViewHandler(ApplicationImpl.java:562)
org.ajax4jsf.event.InitPhaseListener.beforePhase(InitPhaseListener.java:92)
com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:228)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:99)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:113)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)

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

Sérgio Fantin

unread,
Mar 10, 2011, 2:22:15 PM3/10/11
to jav...@googlegroups.com
Opa, valew.

Derrube o Tomcat e suba novamente.

Como você tá acessando a app? Tente algo do tipo: http://localhost:8080/minhaApp/pages/home.jsf

Lucas Moura

unread,
Mar 10, 2011, 2:41:33 PM3/10/11
to jav...@googlegroups.com
Sérgio eu derrubei o tomcat e levantei de novo mas continua com esse mesmo erro.

Estou utilizando assim mesmo, http://localhost:8080/AppJsf_sistemaFinanceiro/helloRich.jsf, também tentei http://localhost:8080/AppJsf_sistemaFinanceiro/helloRich.faces mas nada.
Reply all
Reply to author
Forward
0 new messages