没有为此应用程序配置工厂

时间:2012-08-03 11:59:10

标签: tomcat jsf-2 myfaces

我正在尝试在Tomcat 7 webserver上使用Apache MyFaces 2.1.8运行JSF 2.0 webapp。当我尝试加载一个简单的页面时,我收到此错误:

  

java.lang.IllegalStateException:没有为此应用程序配置的工厂。如果faces-initialization完全不起作用,则会发生这种情况 - 请确保正确包含基本面应用程序所需的所有配置设置,并且包含所有必需的lib。还要检查Web应用程序和容器的日志记录输出是否有异常!

     

如果你这样做并且一无所获,那么错误可能是由于您使用了一些特殊的Web容器,这些容器不支持通过TLD文件注册上下文侦听器,并且您的web.xml中未设置上下文侦听器。   典型的配置看起来像这样;

<listener>
  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

我应该怎么做才能修复它?感谢名单!

编辑:

的pom.xml

<dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.8.3</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.3</version>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
    </dependency>
    <dependency>
        <groupId>commons-digester</groupId>
        <artifactId>commons-digester</artifactId>
        <version>1.8</version>
    </dependency>
    <dependency>
        <groupId>commons-digester</groupId>
        <artifactId>commons-digester</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.1.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.1.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-bundle</artifactId>
        <version>2.1.8</version>
    </dependency>

1 个答案:

答案 0 :(得分:1)

我点击相同的错误消息,使用我所知道的一个好的JSF portlet项目设置(即web.xml,faces-config.xml和我的caselet中的值都是准确的)。

事实证明我的问题是由于包含Apache commons jar文件引起的;我还没有确定哪一个特别导致了这个问题,但是在从项目中删除以下jar作为依赖项之后,错误已经停止显示:

  • 公地编解码器-1.3.jar
  • 公地文件上传-1.2.jar
  • 公地HttpClient的-3.1.jar
  • 公地-IO-1.4.jar
  • 公地琅2.1.jar
  • 共享记录-1.1.1.jar

看看这个列表,看来“commons-codec-1.3.jar”和“commons-logging-1.1.1.jar”罐子在我的设置和你的设置之间很常见,所以可能首先要删除其中一个或两个看看它有什么不同?

编辑:我在另一个项目中再次遇到问题,该项目在Web应用程序中存在commons-logging-1.1.1.jar,删除它会阻止错误显示。