【问题标题】:No Factories configured for this Application没有为此应用程序配置工厂
【发布时间】:2012-08-01 11:28:29
【问题描述】:

我正在尝试在 Tomcat 7 网络服务器上使用 Apache MyFaces 2.1.8 运行 JSF 2.0 网络应用程序。当我尝试加载一个简单页面时,我收到此错误:

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

如果您这样做但什么也没找到,错误可能是由于您使用了一些不支持通过 TLD 文件注册上下文侦听器的特殊 Web 容器,并且您的 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>

【问题讨论】:

  • 为什么不直接阅读错误信息?答案就在里面!
  • 其实我的配置很好,我已经包含了所有必要的库
  • 对不起,但例外情况另有说明:)重新阅读。
  • 我跟随了一个教程,我已经包含了所有必要的库,也许这是一个库的问题,但我无法弄清楚
  • 您是否按照错误消息中的建议添加了 条目?

标签: tomcat jsf-2 myfaces


【解决方案1】:

我遇到了同样的错误消息,使用我知道的一个好的 JSF portlet 项目设置(即 web.xml、faces-config.xml 和我的例子中的 portlet.xml 中的值都是准确的)。

原来我的问题是由包含 Apache commons jar 文件引起的;我还没有确定是哪一个特别导致了这个问题,但是在从项目中删除以下 jar 作为依赖项后,错误停止出现:

  • commons-codec-1.3.jar
  • commons-fileupload-1.2.jar
  • commons-httpclient-3.1.jar
  • commons-io-1.4.jar
  • commons-lang-2.1.jar
  • commons-logging-1.1.1.jar

查看此列表,“commons-codec-1.3.jar”和“commons-logging-1.1.1.jar”jar 似乎在我的设置和您的设置之间很常见,因此可以先删除其中一个或两个看看有什么不同?

编辑:我在另一个项目中再次遇到了这个问题,该项目的 web 应用程序中存在 commons-logging-1.1.1.jar,删除它已经阻止了错误的出现。

【讨论】:

    猜你喜欢
    • 2019-01-04
    • 2015-05-09
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多