com.sun.faces.config.ConfigurationException: нет web.xml нет - PullRequest
2 голосов
/ 26 августа 2010

Я запрограммировал приложение с помощью 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!

  • Мое дерево каталогов выглядит так:

OLD

Мой сервлет тоже есть:

  <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. Но, к сожалению, проблема осталась прежней. Моя структура каталогов выглядит так: alt text

Update3

Ответ на комментарий Паскаля:

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

3 голосов
/ 26 августа 2010

Несколько указателей.Размещается ли 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");
                }
            }

, и он ищет

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-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
1 голос
/ 30 августа 2010

Я начал новый проект и переместил одну часть сразу.После этого это работает.К сожалению, я понятия не имею, где проблема была -.-

Но разумным подходом является создание нового пустого проекта и перемещение всех файлов (кроме файлов конфигурации, я написал их снова).

...