2011-12-09 34 views
3

我有一個包含一些RichFaces組件的項目。 所有其他組件都顯示,但RichFaces。配置爲RichFaces:java.lang.ClassNotFoundException:org.ajax4jsf.Filter

從服務器日誌,我得到:

拋出java.lang.ClassNotFoundException:org.ajax4jsf.Filter

據我所知,有RichFaces的4.0需要在web.xml中沒有過濾器。

這裏是我的

  1. 公地的BeanUtils-1.7.0.jar
  2. 公地集合-3.2.jar
  3. 公共沼氣池-1.8.jar
  4. 公地-digester.jar
  5. commons-discovery.jar
  6. commons-logging-1.0.4.jar
  7. cssparser-0.9.5.jar
  8. 番石榴r08.jar
  9. jhighlight-1.0.jar
  10. JSF的api.jar文件
  11. JSF的facelets.jar
  12. JSF的impl.jar中
  13. RichFaces的組件-API-4.0.0.Final.jar
  14. RichFaces的組件-UI-4.0.0.Final.jar
  15. RichFaces的核-API-4.0.0.Final.jar
  16. 個RichFaces的核心 - IMPL-4.0.0.Final.jar
  17. SAC-1.3.jar

我的web.xml

<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>/faces/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.faces</url-pattern> 
</servlet-mapping> 

我使用GlassFish服務器3.1。 1

我試過不同的配置,也試圖包含ajax4jsf.jar。但總是以相同的錯誤結束。任何幫助是極大的讚賞。

完整的服務器日誌如下所示:

0500|SEVERE|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WebModule[/HelloWorld_war_exploded]PWC1270: Exception starting filter richfaces 
java.lang.InstantiationException 
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:124) 
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4685) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5377) 
    at com.sun.enterprise.web.WebModule.start(WebModule.java:498) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733) 
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2000) 
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1651) 
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:109) 
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:462) 
    at com.sun.enterprise.v3.server.ApplicationLoaderService.processApplication(ApplicationLoaderService.java:375) 
    at com.sun.enterprise.v3.server.ApplicationLoaderService.postConstruct(ApplicationLoaderService.java:219) 
    at com.sun.hk2.component.AbstractCreatorImpl.inject(AbstractCreatorImpl.java:131) 
    at com.sun.hk2.component.ConstructorCreator.initialize(ConstructorCreator.java:91) 
    at com.sun.hk2.component.AbstractCreatorImpl.get(AbstractCreatorImpl.java:82) 
    at com.sun.hk2.component.SingletonInhabitant.get(SingletonInhabitant.java:67) 
    at com.sun.hk2.component.EventPublishingInhabitant.get(EventPublishingInhabitant.java:139) 
    at com.sun.hk2.component.AbstractInhabitantImpl.get(AbstractInhabitantImpl.java:76) 
    at com.sun.enterprise.v3.server.AppServerStartup.run(AppServerStartup.java:253) 
    at com.sun.enterprise.v3.server.AppServerStartup.doStart(AppServerStartup.java:145) 
    at com.sun.enterprise.v3.server.AppServerStartup.start(AppServerStartup.java:136) 
    at com.sun.enterprise.glassfish.bootstrap.GlassFishImpl.start(GlassFishImpl.java:79) 
    at com.sun.enterprise.glassfish.bootstrap.GlassFishDecorator.start(GlassFishDecorator.java:63) 
    at com.sun.enterprise.glassfish.bootstrap.osgi.OSGiGlassFishImpl.start(OSGiGlassFishImpl.java:69) 
    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain$Launcher.launch(GlassFishMain.java:117) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.sun.enterprise.glassfish.bootstrap.GlassFishMain.main(GlassFishMain.java:97) 
    at com.sun.enterprise.glassfish.bootstrap.ASMain.main(ASMain.java:55) 
Caused by: java.lang.ClassNotFoundException: org.ajax4jsf.Filter 
    at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1519) 

回答

5

從庫中刪除jsf*.jar。 JSF 2.x庫是由Glassfish3提供的已經。此外,jsf-facelets.jar是適用於JSF 1.x的Facelets 1.x。 JSF 2.x庫已經包含Facelets 2.x.

至於例外,剛剛從web.xml去除org.ajax4jsf.Filter<filter>。這是來自RichFaces 3.x,並且不再需要RichFaces 4.x.確保您正在閱讀開發者文檔RichFaces 4.x而不是RichFaces 3.x

+0

感謝您的及時答覆。我沒有在Web.xml中定義任何過濾器,並刪除jsf * .jar創建其他問題。項目中的Facelets組件正常。問題只在於RichFaces沒有顯示,我收到前面提到的服務器錯誤。 – timsa7

+0

顯然,由於自定義庫和'web.xml'的存在不正確,服務器本身就會損壞。再試一次全新的未經修改的Glassfish安裝。順便問一句,你正在談論哪些「其他問題」?請詳細描述症狀和錯誤消息。 – BalusC

+0

現在正在工作。我使用的是IntelliJ,如果您選擇GlassFish作爲服務器,它只會加載三個罐子javax.ejb.jar javax.servlet.jar javax.servlet.jsp.jar我切換到Netbeans並加載所有必需的庫。除此之外,我使用了一些在RichFaces 4.0中不允許使用的標籤,NetBeans IDE中的IDE能夠選擇所以現在一切都已經解決。 – timsa7