我有一个运行正常的maven项目(DWM3,Tomcat8)。我被告知使用 JSF 重新实现当前功能。
当前的 maven 依赖项是:
- JSTL : 1.2
- 质数:4.0 -新增>
- javaee-api:7.0 -> 新增
- JSF-IMPL : 2.2.3 -> 新增
- JSF-API : 2.2.3 -> 新增
将 Eclipse IDE 与 WTP 3.6.0M6 结合使用。被告知我必须使用这些版本。
现在进入例外。我没有对我以前的工作代码(1 个 servlet)进行任何更改,如果我删除新添加的依赖项,异常就会消失,我的 web 应用程序会再次工作。
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) 将 javaee-api 依赖范围设置为