java.lang.ClassCastException:无法将com.sun.faces.config.FacesInitializer强制转换为javax.servlet.ServletContainerInitializer

时间:2014-03-30 11:54:19

标签: maven jsf primefaces

我有一个正确运行的maven项目(DWM3,Tomcat8)。有人告诉我使用JSF重新实现当前的功能。

当前的maven依赖关系是:

  • jstl:1.2
  • primefaces:4.0 - >新增
  • javaee-api:7.0 - >新增
  • jsf-impl:2.2.3 - >新增
  • jsf-api:2.2.3 - >新增

将Eclipse IDE与WTP 3.6.0M6配合使用。被告知我必须使用这些版本。

现在进入异常。我没有对我之前的工作代码(1个servlet)进行任何更改,如果我删除新添加的依赖项,则异常消失,我的webapp再次运行。

SEVERE: Failed to process JAR found at URL [/test] for ServletContainerInitializers for context with name [{1}]
java.io.IOException: java.lang.ClassCastException: Cannot cast com.sun.faces.config.FacesInitializer to javax.servlet.ServletContainerInitializer
    at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:185)
    at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:151)
    at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1597)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1125)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:768)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:303)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5058)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1388)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException: Cannot cast com.sun.faces.config.FacesInitializer to javax.servlet.ServletContainerInitializer
    at java.lang.Class.cast(Unknown Source)
    at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:182)
    ... 15 more

所以我不确定导致此异常的依赖冲突的来源在哪里

1 个答案:

答案 0 :(得分:3)

解决方案是:

a)从maven中删除javaee-api依赖项 b)将javaee-api依赖范围设置为提供的