Web applications &引用;无法加载名为[org.ajax4jsf.taglib.html.facelets.ActionParamHandler]的类;添加Richfaces后

Web applications &引用;无法加载名为[org.ajax4jsf.taglib.html.facelets.ActionParamHandler]的类;添加Richfaces后,web-applications,jsf,glassfish,Web Applications,Jsf,Glassfish,我正在glassfish v3服务器上运行一个webapp。我刚刚将richfaces添加到我的应用程序中,但在尝试运行项目时出现错误: INFO: Initializing Mojarra 2.0.2 (FCS b10) for context '/WMC' INFO: Unsanitized stacktrace from failed start... java.lang.RuntimeException: WEB9033: Unable to load class with name [

我正在glassfish v3服务器上运行一个webapp。我刚刚将richfaces添加到我的应用程序中,但在尝试运行项目时出现错误:

INFO: Initializing Mojarra 2.0.2 (FCS b10) for context '/WMC'
INFO: Unsanitized stacktrace from failed start...
java.lang.RuntimeException: WEB9033: Unable to load class with name [org.ajax4jsf.taglib.html.facelets.ActionParamHandler], reason: java.lang.NoClassDefFoundError: com/sun/facelets/tag/jsf/ComponentHandler
        at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:944)
        at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1420)
        at com.sun.faces.util.Util.loadClass(Util.java:203)
        at com.sun.faces.config.processor.AbstractConfigProcessor.loadClass(AbstractConfigProcessor.java:313)
        at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processComponent(FaceletTaglibConfigProcessor.java:568)
        at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTags(FaceletTaglibConfigProcessor.java:361)
        at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibrary(FaceletTaglibConfigProcessor.java:314)
        at com.sun.faces.config.processor.FaceletTaglibConfigProcessor.process(FaceletTaglibConfigProcessor.java:263)
        at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:337)
        at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:223)
        at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:4591)
        at com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:535)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:5193)
        at com.sun.enterprise.web.WebModule.start(WebModule.java:499)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:928)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:912)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:694)
        at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1933)
        at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1605)
        at com.sun.enterprise.web.WebApplication.start(WebApplication.java:90)
        at org.glassfish.internal.data.EngineRef.start(EngineRef.java:126)
        at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:241)
        at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:236)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:339)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
        at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
        at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
        at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
        at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
        at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoClassDefFoundError: com/sun/facelets/tag/jsf/ComponentHandler
        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 org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:914)
        ... 50 more
Caused by: java.lang.ClassNotFoundException: com.sun.facelets.tag.jsf.ComponentHandler
        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 org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:949)
        at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1420)
        ... 55 more
My web.xml如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <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>
    <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><session-config>
        <session-timeout>
            10
        </session-timeout>
    </session-config><welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <resource-ref>
        <res-ref-name>mail/WMCMail_LogicalName</res-ref-name>
        <res-type>javax.mail.Session</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

javax.faces.PROJECT_阶段
发展
org.richfaces.SKIN
蓝调的
org.richfaces.CONTROL\u蒙皮
使可能
RichFaces过滤器
富人
org.ajax4jsf.Filter
富人
Facesservlet
要求
向前地
包括
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.jsf
10
index.jsp
邮件/WMCMail\u逻辑名称
javax.mail.Session
容器
我在我的项目中添加了以下LIB


我曾尝试包含jsf-facelets.jar,但这会导致一些版本冲突。你知道怎么做吗?

Glassfish附带内置JSF 2.0库。RichFaces3.3.0与JSF2.0不兼容

您有两种选择:

  • 将JSF2.0降级为JSF1.2。您需要在
    /WEB-INF/lib
    中提供自己的(或RichFaces提供的)JSF 1.2库,并通过将
    /WEB-INF/sun WEB.xml
    中的
    useBundledJsf
    属性设置为
    true
    ,指示Glassfish使用提供的JSF:

    <sun-web-app>
        <class-loader delegate="false"/>
        <property name="useBundledJsf" value="true"/>
    </sun-web-app>
    
    
    
  • 将RichFaces 3.x升级至至少3.3.3。它部分支持JSF2.0。中介绍了如何使其工作


  • 要获得RichFaces对JSF2.0的全面支持,您必须等待RichFaces4.0成为最终版本。到目前为止,和是少数几个完全支持JSF2.0的组件之一。

    我已经使用了这两个组件使richface可用。我想那时我会尝试OpenFaces。这似乎是最简单的:)。我真的不明白我的项目是不是基于maven的?OpenFaces有一个很好的网站,有着非常棒的组件,但在我看来,它还没有那么广泛的社区支持。对于PrimeFaces,社区支持更好。我在这方面有着丰富的实践经验,而且在他们的工作中,PF的首席开发人员Cagatay会对问题做出很好的反应。您可能需要考虑这一点。当你遇到问题时,良好的社区支持是无价的。顺便说一句:PrimeFaces也有很棒的组件。你找到他们的了吗?Maven也提供了PrimeFaces:我找到了他们的展示。它们也有非常好的组件。那我就要吃素面奶了。只要它有效,对我来说并不重要。它确实有效。现在我可以在一个数据表中选择多行。酷:)