Maven java.lang.ClassCastException:无法将com.sun.faces.config.FacesInitializer转换为javax.servlet.ServletContainerInitializer
我有一个maven项目(DWM3,Tomcat8),它运行正常。我被告知使用JSF重新实现当前的功能 当前的maven依赖项包括:Maven java.lang.ClassCastException:无法将com.sun.faces.config.FacesInitializer转换为javax.servlet.ServletContainerInitializer,maven,jsf,primefaces,Maven,Jsf,Primefaces,我有一个maven项目(DWM3,Tomcat8),它运行正常。我被告知使用JSF重新实现当前的功能 当前的maven依赖项包括: jstl:1.2 primefaces:4.0->新添加 JavaEEAPI:7.0->新添加 jsf impl:2.2.3->新添加 jsf api:2.2.3->新添加 在WTP3.6.0M6中使用EclipseIDE。有人告诉我必须使用这些版本 现在是例外。我没有对以前的工作代码(1个servlet)做任何更改,如果我删除了新添加的依赖项,异常就会消失,我
- jstl:1.2
- primefaces:4.0->新添加
- JavaEEAPI:7.0->新添加
- jsf impl:2.2.3->新添加
- jsf api:2.2.3->新添加
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
因此,我不确定导致此异常的依赖冲突的来源在哪里。解决方案是: a) 从maven中删除javaee api依赖项
b) 将javaeeapi依赖范围设置为provided为什么要将
javaeeapi
JAR添加到webapp中?servletcontainer本身是一个(部分)JavaEE实现,应该已经提供了开箱即用…@BalusC,因为我被告知要这么做。不管怎样,我已经删除了它,异常不再出现,所以我猜就是这样。谢谢那个告诉你应该感到非常羞愧的人。我也有同样的问题,你找到解决办法了吗?哦,我想它删除了javaee api依赖项,但是你能把它作为一个公认的答案吗?