Erro Ajax + JSF + Richfaces (basico)

14 respostas
H

To tentando rodar um exemplo basico de Richfaces usando Eclipse, porem ta dando um erro q n consigo arrumar. To usando um plugin no eclipse q adiciona objetos richfaces de modo grafico. Ja adicionei as bibliotecas do Richfaces (ate copiei os jars p dir /lib), arrumei o web.xml, porem ta dando esse erro:

15/12/2008 23:29:08 org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java.lang.NoClassDefFoundError: javax/faces/component/ActionSource2
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1847)
	at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:890)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1354)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:896)
	at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:945)
	at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:426)
	at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:348)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException: javax.faces.component.ActionSource2
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	... 32 more
15/12/2008 23:29:08 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
15/12/2008 23:29:08 org.apache.catalina.core.StandardContext start
SEVERE: Context [/teste] startup failed due to previous errors
15/12/2008 23:29:08 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
15/12/2008 23:29:08 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
15/12/2008 23:29:08 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/78  config=null
15/12/2008 23:29:08 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2429 ms
arquivo jsp
<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<f:loadBundle var="Message" basename="demo.Messages"/>

<html>
    <head>
    	<title>Input User Name Page</title>
    </head>
    <body>
    
    <f:view>
		<h1><h:outputText value="#{Message.header}"/></h1>

		<h:messages style="color: red"/>

    	<h:form id="greetingForm">
    		<h:outputText value="#{Message.prompt_message}"/>
    		<h:inputText value="#{user.name}" required="true">
	    		<f:validateLength maximum="30" minimum="3"/>
    		</h:inputText>

		 	<h:commandButton action="hello" value="Say Hello!" />

    	</h:form>
    
    <a4j:outputPanel>
    </a4j:outputPanel>
		
	</f:view>
    </body>
</html>
web.xml
<?xml version="1.0"?>
<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">
 <display-name>teste</display-name>
 <context-param>
 	<param-name>org.richfaces.SKIN</param-name>
    <param-value>blueSky</param-value>
 </context-param>
 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</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>
 <listener>
  <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
 </listener>
 <!-- Faces Servlet -->
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <!-- Faces Servlet Mapping -->
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>

Coloquei tudo como vi nos exemplos, nao sei qual a bronca.
Alguem me ajuda ai, vlw...

14 Respostas

H

engracado q quando tiro a taglib ajax “a4j:outputPanel”, ai ele pega, ou seja, o problema ta no reconhecimento das taglibs ajax…

S

qual implementação JSF esta usando, e qual versão ??

contrabando

Cara posta ai as libs que você está usando(com as versões).
e também confira se as libs estão indo com o projeto para
seu servidor de aplicação…

H

Infelizmente to no trabalho e to sem o meu notebook, mas assim q chegar em casa digo a lista de libs. Porem de antemao digo q deva ser uma versao nova (se nao for a mais nova), pois baixei o eclipse ganymede e peguei um plugin do jboss p colocar o richfaces no eclipse…isso ta c cara de algo besta q n to conseguindo vizualizar, pois ele pega sem taglib richfaces ou ajax (so c taglib jsf), porem adicionando tags ajax ou rich, ai ele n pega mais…

S

tentar baixar a nova versão do myfaces no site da apache…

concerta resolverá seu problema…att

H

Resumindo oq se tem q fazer p usar jsf + richfaces + ajax:

  • adicionar os jars (jsf + richfaces + ajax (ajax ja vem no jar do rich))
  • configurar o web.xml e o faces-config.xml
  • fazer o arquivo jsf usando as taglibs

o basico eh isso msm ne? to fazendo isso e ta dando pau…

H

soudaniel_01:
tentar baixar a nova versão do myfaces no site da apache…

concerta resolverá seu problema…att


so uma duvida, o myfaces entra aonde aqui?

poderia colocar o link ai, eh tanto arquivo e q posso ate confundir, vlw…

S

myfaces é implementação da especificação IR da sun, richfaces é um plugin AJAX
que extends as funcionalidades de AJAX4JSF, entaum vc prescisa ter uma implementação
JSF na sua aplicação…


http://myfaces.apache.org/download.html

H

Ok, pensei q nesse plugin jboss do richfaces ja vinhesse o jar do jsf, vou testar e vejo se pegou, vlw…

H

Seguinte, adicionei o myfaces 1.2.5 e deu problema de duplicata de implementacao JSF, ou seja, la no projeto ja tem um jar do jsf (como previ), inclusive a versao creio eu seja a 1.1, pois tem isso no manifest do jar dele:

Specification-Version: 1.1
Implementation-Title: ‘jsf-api’: JavaServer Faces API Reference Impl.
Implementation-Version: 1.1_02-b08

porem n consigo rodar um simples exemplo, alguem ajuda ai, vlw…

M

Vai ai a dica que eu usei …

Baixe o jsf 1.2 do portal java
https://javaserverfaces.dev.java.net/files/documents/1866/104151/mojarra-1.2_09-b02-FCS-binary.zip

Baixe o facelets do portal java
https://facelets.dev.java.net/files/documents/3448/31241/facelets-1.0.14.zip

Baixe o RichFaces do portal jboss
http://download.jboss.com/jboss-richfaces/richfaces-ui-3.2.2.SR1-bin.zip

Tá usando eclipse ganymede + jboss tools?!?!

Se vc tentar criar um projeto usando JSF Project do JBoss vai ter problemas com o classpath … para isso vc pode resolver de duas formas …

1ª Colocando as libs dentro do diretório do WEB-INF/lib/ …

2ª Crie seu projeto utilizando a opção Dynamic Web Project da pasta Web … desta forma o eclipse consegue resolver o classpath das tuas libs …

Importante! Diversas vezes acontece este erro que vc mencionou … restartando o eclipse tbm resolve em alguns casos … pois o mesmo se perde com o tomcat ao fazer o deploy da aplicação …

H

mlfranz,

exatamente, to usando o ganymede + jboss tools, pois achei o melhor plugin visual p jsf e ajax (e olhe que eu rodei atras de um e nao achei outro bom). to criando o projeto usando Dynamic Web Project, inclusive consigo rodar apenas c objetos jsf (sem richfaces e ajax), porem qnd adiciono tags richfaces ou ajax, ai dá esse problema.

ja tentei adicionar adicionar esse myfaces 1.2.5 mas deu implementacao duplicada, pois no plugin jboss tools ele ja adiciona jars q implementam jsf, ja tentei adicionar o jars do richfaces e continuou dando o erro, vou tentar esse mojarra. apesar q eu acho q o jboss tools ja incluem tds os jars necessarios p rodar o jsf + richfaces + ajax, pelo menos seria a logica, vou testar o mojarra e ve no q dá, pois n consigo sair disso, inclusive ja joguei os jars na pasta lib do projeto no eclipse e nd, vou ver no q dá o mojarra, vlw…

H

msm adicionando o mojarra, deu msm erro…

mlfranz, vc teria algum tutorial de como usar o jboss tools + eclipse ? um passo-a-passo de um “alô mundo”? vlw…

M

hlds,

Não tenho tutorial infelizmente, fui no peito e na coragem, rsrsrs …

Outra dica é vc não ter caminhos com espaços nas tuas libs, pode gerar problemas …

Outra coisa que me ocorreu é tlvz vc remover o teu server e recriá-lo, algumas vezes pode ser problema no registro do contexto com o tomcat …

Vou postar o meu web.xml que tlvz lhe ajude a identificar algum problema …

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 
 id="xxxx" 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">
 
 <display-name>xxxx</display-name>

 <!-- Facelets -->
 
 <context-param>
  <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  <param-value>.xhtml</param-value>
 </context-param>
 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.REFRESH_PERIOD</param-name>
  <param-value>2</param-value>
 </context-param>
 <context-param>
  <param-name>facelets.DEVELOPMENT</param-name>
  <param-value>true</param-value>
 </context-param>
 <context-param>
  <param-name>com.sun.faces.validateXml</param-name>
  <param-value>false</param-value>
 </context-param>
 <context-param>
  <param-name>com.sun.faces.verifyObjects</param-name>
  <param-value>false</param-value>
 </context-param>

 <listener>
  <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
 </listener>

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

 <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>
 <context-param>
  <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  <param-value>com.sun.facelets.FaceletViewHandler</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>

A ordem de declaração no arquivo pelo que notei tbm é importante …

Criado 15 de dezembro de 2008
Ultima resposta 21 de dez. de 2008
Respostas 14
Participantes 4