2

我用 JSF 和其他一些框架编写了一个应用程序。然后我用 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!

  • 我的目录树如下所示:

老的

我的 Servlet 也在那里:

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

更新2

  • 目录(在 BalusC Commend 之后): 在这里我找到了一本关于 Maven Web 项目的好手册。但不幸的是,问题仍然存在。我的目录结构如下: 替代文字

更新3

回应帕斯卡的评论:

  • 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.

也许这有帮助?

4

2 回答 2

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>
于 2010-08-26T08:15:05.303 回答
1

我开始了一个新项目并一次移动了一个部分。之后它就起作用了。不幸的是,我不知道问题出在哪里-.-

但是创建一个新的空项目并移动所有文件(除了配置文件,我又写了一遍)是一种合理的方法..

于 2010-08-30T08:10:41.570 回答