Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven java.lang.ClassCastException:无法将com.sun.faces.config.FacesInitializer转换为javax.servlet.ServletContainerInitializer_Maven_Jsf_Primefaces - Fatal编程技术网

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

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)做任何更改,如果我删除了新添加的依赖项,异常就会消失,我

我有一个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)做任何更改,如果我删除了新添加的依赖项,异常就会消失,我的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

因此,我不确定导致此异常的依赖冲突的来源在哪里。解决方案是:

a) 从maven中删除javaee api依赖项

b) 将javaeeapi依赖范围设置为provided

为什么要将
javaeeapi
JAR添加到webapp中?servletcontainer本身是一个(部分)JavaEE实现,应该已经提供了开箱即用…@BalusC,因为我被告知要这么做。不管怎样,我已经删除了它,异常不再出现,所以我猜就是这样。谢谢那个告诉你应该感到非常羞愧的人。我也有同样的问题,你找到解决办法了吗?哦,我想它删除了javaee api依赖项,但是你能把它作为一个公认的答案吗?