0

我正在尝试在 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>
4

1 回答 1

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,删除它已经阻止了错误的出现。

于 2012-08-30T09:21:04.717 回答