com.sun.faces.config.ConfigurationException:没有web.xml存在

时间:2010-08-26 07:34:23

标签: maven-2 tomcat jsf web.xml

我用JSF和其他一些fraeworks编写了一个应用程序。然后我用maven销毁了我的元数据然后我创建了一个新项目并将我的所有类和配置文件导入到新项目中。所以我有干净的元数据。现在可以毫无问题地建造项目。但是当我想在tomcat上启动时,我得到以下异常:

com.sun.faces.config.ConfigurationException: no web.xml present
 at com.sun.faces.config.ConfigureListener$WebXmlProcessor.scanForFacesServlet(ConfigureListener.java:785)
 at com.sun.faces.config.ConfigureListener$WebXmlProcessor.<init>(ConfigureListener.java:745)
 at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:173)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 at org.apache.catalina.core.StandardService.start(StandardService.java:519)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

但该项目肯定有web.xml。有人知道我的错误可能在哪里吗?谢谢


更新

  • 是的我正在使用m2Eclipse!

  • 我的目录树如下:

OLD

我的Servlet也在那里:

  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>
      javax.faces.webapp.FacesServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

UPDATE2

  • 目录(在BalusC推荐之后): Here我找到了一本关于Maven Web Projects的好手册。但不幸的是问题仍然存在。 我的目录结构如下: alt text

UPDATE3

回应Pascal的评论:

  • mvn clean compile成功
  • mvn install会抛出构建错误:

    [INFO] Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if execut ing in update mode)

我从Windows控制台执行了这些命令


也许问题不是别的。启动服务器时还有另一个警告:

27.08.2010 09:04:52 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNUNG: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:studentportal' did not find a matching property.

也许这有帮助?

2 个答案:

答案 0 :(得分:3)

一些指示。 web.xml是否放在WEB-INF / web.xml?

从源代码中,抛出了这个特殊的异常:

InputStream in = context.getResourceAsStream(WEB_XML_PATH);
            if (in == null) {
                if (context.getMajorVersion() < 3) {
                    throw new ConfigurationException("no web.xml present");
                }
            }

它正在寻找

的web.xml
private static final String WEB_XML_PATH = "/WEB-INF/web.xml";

所以它找不到web.xml。

同样由于某种原因,它期望Servlet 3.0仅适用于Tomcat 7.0 - 但我认为主要问题应该是web.xml的存在

最后,它还将在web.xml中查找已定义的servlet,如下所示

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

答案 1 :(得分:1)

我开始了一个新项目并立即移动了一个部分。之后它才有效。不幸的是我不知道问题出在哪里 - .-

但是创建一个新的空项目并移动所有文件(配置文件除外,我再次编写它们)是一种合理的方法..