这个错误出现的原因是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部署错误时,因classpath中存在多个JSF实现而引发的问题,并提供了两种解决方案:一是通过在WEB-INF/web.xml中添加特定参数来指定使用项目中的JSF实现;二是删除lib目录下的jsf-*.jar文件,让JBoss仅使用应用内的JSF实现。特别指出,对于JBoss-as.7.0.0版本,建议升级到7.0.1或更高版本,以避免参数无效的问题。
808

被折叠的 条评论
为什么被折叠?



