繁体   English   中英

com.sun.faces.config.ConfigurationException:不存在web.xml

[英]com.sun.faces.config.ConfigurationException: no web.xml present

我用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!

  • 我的目录树如下所示:

我的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 Commend之后): 在这里,我找到了有关Maven Web项目的很好的手册。 但是不幸的是问题仍然存在。 我的目录结构如下: 替代文字

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.

也许有帮助吗?

一些指针。 是否将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。

同样由于某种原因,它期望仅在Tomcat 7.0中可用的Servlet 3.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>

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM