Java 在JBoss 7.1.0上部署Primefaces应用程序时出错

Java 在JBoss 7.1.0上部署Primefaces应用程序时出错,java,jsf,primefaces,jboss7.x,Java,Jsf,Primefaces,Jboss7.x,我试图在JBoss7.1.0中部署一个JSF(Primefaces)应用程序 我得到以下错误: 18:17:03,390 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-8) Critical error during deployment: : com.sun.faces.config.ConfigurationException:Factory 'javax.faces

我试图在JBoss7.1.0中部署一个JSF(Primefaces)应用程序

我得到以下错误:

18:17:03,390 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (MSC 
service thread 1-8) Critical error during deployment: :  
com.sun.faces.config.ConfigurationException:Factory  
'javax.faces.context.PartialViewContextFactory' was not configured properly.
    at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactories
Exist(FactoryConfigProcessor.java:305) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAP
SHOT]
    at com.sun.faces.config.processor.FactoryConfigProcessor.process(Factory
ConfigProcessor.java:219) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:361)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureLi
stener.java:225) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at org.apache.catalina.core.StandardContext.contextListenerStart(Standar
dContext.java:3392) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3
850) [jbossweb-7.0.10.Final.jar:]
    at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentS
ervice.java:90) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(Se
rviceControllerImpl.java:1811)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceCont
rollerImpl.java:1746)
有什么想法吗


谢谢。

这表明webapp的运行时类路径与另一个JSF实现存在冲突。成熟的JavaEE应用服务器,如JBossAS、Glassfish、WebSphere、Weblogic等,已经随JSF捆绑销售,因为这是JavaEEAPI的一部分。如果您在webapp的
/WEB-INF/lib
中也提供JSF,那么它可能与appserver捆绑的JSF冲突。JSFAPI部分将从appserver提供的JSF库加载,但JSF impl部分将从webapp提供的JSF库加载。如果它们是不同的版本,那么您将得到如下配置错误

您有两种选择:

  • 删除webapp绑定的JSF并依赖服务器绑定的JSF

  • 告诉服务器改用webapp捆绑的JSF。如何做到这一点取决于服务器品牌/版本。在JBoss 7.x的特定情况下,需要将以下上下文参数添加到webapp的
    web.xml

    
    org.jboss.jbossfaces.WAR\u BUNDLES\u JSF\u IMPL
    真的
    
  • 像Tomcat、Jetty等简单的JSP/Servlet容器并不附带JSF捆绑,这就是为什么在针对此类容器时,您需要在
    /WEB-INF/lib
    中提供自己的JSF库

    另见:

    JBoss7附带了自己的JSF版本。这可能会也可能不会干扰您的应用程序。您的Primefaces应用程序捆绑了什么版本的JSF?