这个错误出现的原因是classpath中存在多个jsf实现。
比如,JBoss7有一个默认的JSF实现,而你的应用中却用了MyFaces作为JSF实现,这时候应用部署时就会报这个错误。
解决方法:
1。坚持使用项目中的JSF实现。这时在WEB-INF/web.xml中添加这个参数即可:
<context-param> <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name> <param-value>true</param-value> </context-param>
这会告诉JBoss7忽略自己默认的JSF实现而使用项目中的JSF实现。这个方法只适用于JBoss-as.7.0.1以后的版本。
如果你用的是7.0.0的版本,请马上升级到7.0.1或更新的版本,因为7.0版中有BUG导致上面的参数无效。
2。如果是JBoss7之前的版本,那么删除 lib/ 下 jsf-*.jar 即可。这样JBoss就只能用应用里的JSF实现了。
在JBoss中部署JSF应用时报错"Could not find backup for factory javax.faces.application.ApplicationFactory" 解决方法