Jsf java.lang.IllegalStateException:找不到工厂:javax.faces.application.ApplicationFactory

Jsf java.lang.IllegalStateException:找不到工厂:javax.faces.application.ApplicationFactory,jsf,Jsf,我试图创建一个基本的JSF 2.0+Facelet应用程序,但出现以下错误: java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory 我正在使用以下罐子: jsf-impl-2.1.0 jsf-api-2.1.0 jstl-1.2 el-ri-

我试图创建一个基本的JSF 2.0+Facelet应用程序,但出现以下错误:

 java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory
我正在使用以下罐子:

  • jsf-impl-2.1.0
  • jsf-api-2.1.0
  • jstl-1.2
  • el-ri-1.2
  • ApacheMyFaces 2.1.5
我正在使用下面的罐子

  • jsf-impl-2.1.0
  • jsf-api-2.1.0
  • ApacheMyFaces 2.1.5
您似乎在混合Mojarra和MyFaces实现。这是不对的。使用其中一个,而不是两个。
jsf impl
jsfapi
jar来自mojara。移除它们或MyFaces。混合使用它们将导致在找到正确的实现工厂时发生冲突,正如异常消息试图告诉您的那样

此外

  • el-ri-1.2
这应该已经由Tomcat提供了。你不应该自己供应。把它全部去掉

总而言之,考虑到这个相当严重的错误,我的印象是您在学习JSF时没有阅读适当的教程/资源。我建议验证这是否只是您自己的“愚蠢错误”,或者资源是否真的错误地这么说。在后一种情况下,考虑另一种情况。

另见:
  • -包含Hello World和到sane教程的链接

正如您所建议的,我删除了Apache MyFaces和el-ri jar。但是现在我发现FacesFileNotFound异常。在我的部署描述符中,我提供了作为facesservlet*的servlet映射!您的URL是错误的,但这是一个完全不同的问题:)这个相关的问题可能会帮助您更好地理解它:我建议您将JSF servlet映射到
*.xhtml
上,并始终使用
.xhtml
URL。您好,Balus,我现在将servlet映射更改为Faces servlet*.xhtml,但我得到的仍然是相同的FacesFileNotFound例外如果您确信URL是正确的,那么文件就是不在正确的位置。或者,如果文件实际位于正确的位置,则URL仍然错误;)同样,这与你最初的问题完全无关。您最初的问题已经得到了回答和解决。JSF现在已正确初始化,不再出现工厂异常!对于你的新问题,如果你仍然不知道你做错了什么,就提出一个新问题。