Невозможно "запустить на сервере" веб-приложение из Eclipse - PullRequest
27 голосов
/ 15 июля 2011

При запуске моего проекта WebApp из Eclipse чаще всего он работает правильно. Но если по ошибке остановить сервер, я убиваю его в представлении «Консоль» вместо «Остановить» сервер из представления «Серверы». При запуске чистого проекта я получаю это

java.lang.NullPointerException
at org.eclipse.wst.common.componentcore.internal.util.VirtualReferenceUtilities.getDefaultProjectArchiveName(VirtualReferenceUtilities.java:81)
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getJavaClasspathReferences(J2EEModuleVirtualComponent.java:332)
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getNonManifestRefs(J2EEModuleVirtualComponent.java:236)
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:160)
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:208)
at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:201)
at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.hasConsumableReferences(SingleRootUtil.java:217)
at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.validateSingleRoot(SingleRootUtil.java:165)
at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.isSingleRoot(SingleRootUtil.java:93)
at org.eclipse.jst.common.internal.modulecore.SingleRootExportParticipant.canOptimize(SingleRootExportParticipant.java:84)
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.canOptimize(FlatVirtualComponent.java:136)
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.cacheResources(FlatVirtualComponent.java:118)
at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.fetchResources(FlatVirtualComponent.java:101)
at org.eclipse.wst.web.internal.deployables.FlatComponentDeployable.members(FlatComponentDeployable.java:147)
at org.eclipse.wst.server.core.internal.ModulePublishInfo.hasDelta(ModulePublishInfo.java:418)
at org.eclipse.wst.server.core.internal.ServerPublishInfo.hasDelta(ServerPublishInfo.java:443)
at org.eclipse.wst.server.core.internal.Server.hasPublishedResourceDelta(Server.java:1539)
at org.eclipse.wst.server.core.internal.Server$ResourceChangeJob$1.visit(Server.java:214)
at org.eclipse.wst.server.core.internal.Server.visitModule(Server.java:2929)
at org.eclipse.wst.server.core.internal.Server.visit(Server.java:2913)
at org.eclipse.wst.server.core.internal.Server$ResourceChangeJob.run(Server.java:225)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

И при запуске я получаю это

SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Document base D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Webapp does not exist or is not a readable directory
    at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4319)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4488)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)

Пожалуйста, помогите оправиться от этого.

Ответы [ 15 ]

39 голосов
/ 06 сентября 2012

Мне было трудно заставить его работать, но благодаря "Александру Погребняку" (см. развертывание файла войны на сервере WTP (Eclipse) tomcat ) я смог заставить работать Eclipse Web Projects Maven через m2e:

Прежде чем начать, я должен сказать, что я очень подозрительный человек, поэтому я всегда начинаю с очистки всех своих проектов с помощью меню «Eclipse> Project> Clean ...» (без опции «немедленно запустить сборку») , У меня также не включена опция «Eclipse> Проект> Автоматическая сборка».

Кстати, я полагаю, что у вас уже установлен плагин m2e, или то, что я собираюсь заявить, не имеет смысла ...

Хорошо, начнем:

Во-первых, пока, пока конфигурация сервера:

1) Если у вас есть проект в предыдущей конфигурации сервера, удалите его (щелкните правой кнопкой мыши на сервере и выберите опцию «Добавить и удалить»)

2) Очистите рабочий каталог вашего сервера (щелкните правой кнопкой мыши на сервере и выберите «Tomcat Server Work Directory»)

3) Очистить скомпилированные «остатки» (щелкните правой кнопкой мыши на сервере и выберите «Очистить»)

4) Удалите конфигурацию сервера с вкладки «Серверы»

5) Полностью удалите проект / папку «Серверы» (отображается на вкладке «Обозреватель проектов»)

6) БОНУС: Я также удаляю свою среду выполнения сервера («Eclipse> Окно> Настройки> Сервер> Среды выполнения»)

Во-вторых, «Maven clean» (если ваш веб-проект имеет «Maven nature»):

1) Щелкните правой кнопкой мыши свой веб-проект

2) «Всплывающее меню> Запуск от имени> Maven clean»

Это должно стереть вашу целевую папку

В-третьих, Инсталляция m2e WTP интеграции (да! Это не «по умолчанию». Один целый день, чтобы выяснить это):

1) Откройте опцию Maven «Обнаружение» (Eclipse> Windows> Предпочтения> Maven> Обнаружение)

2) Нажмите кнопку «Открыть каталог» (должно появиться окно «Торговая площадка»)

3) Прокрутите вниз, пока не найдете параметр «Интеграция WTP», затем «проверьте» его!

4) Нажмите "Готово"

5) Появится «экранный плагин». «Далее», «Далее», «Согласен», бла, бла, бла ...

В-четвертых, покиньте Eclipse, затем запустите его снова:

1) Если вас не попросят перезапустить Eclipse (в это трудно поверить, что вы этого не сделаете), перезапустите его сами!

Пятое, реинтеграция Maven:

1) Добавить Maven nature в проект (щелкните правой кнопкой мыши свой веб-проект, «Всплывающее меню> Настроить> Преобразовать в Maven Project»)

2) Обновите конфигурацию maven (да, подозрительно, я знаю). Снова щелкните правой кнопкой мыши свой веб-проект, теперь со значком «M» («Всплывающее меню> Maven> Обновить проект»)

3) Запустите установку Maven (щелкните правой кнопкой мыши свой веб-проект, «Всплывающее меню> Запуск от имени> Установка Maven»)

4) Создайте свой проект («Eclipse> Project> Build All»)

В-шестых, положите все на работу:

1) Разверните и запустите веб-приложение (щелкните правой кнопкой мыши веб-проект, «Всплывающее меню> Запуск от имени> Запуск на сервере»)

2) Вам будет предложено создать другую конфигурацию сервера. Он снова создаст проект / папку «Серверы», но так оно и есть.

Вот и все !!! Должен признать, что после запуска сервера он не работал, но на этот раз (я не знаю, почему) библиотеки «Log4J» не могут быть найдены. После одного "project clean" + "maven clean" и одного "maven install" + "project build" другое сообщение о том, что мой класс сервлетов не найден. Еще раз, я выполнил «проект чистый» + «maven clean» и «maven install» + «сборка проекта» и «вуаля» !!! Это сработало (и вот почему я так подозрительно).

Я начинал волноваться из-за этого нового двойника Juno + m2e ... Никогда не было такого рода проблем с Индиго или Ганимедом ... Но я полагаю, что снова могу доверять Eclipse (можно?)

7 голосов
/ 21 января 2013

Не делайте этих сумасшедших космических обходных путей !!

Это прекрасно работает:

Добавьте в свой файл .project (скрытый) эти строки:

 <natures>
    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>org.eclipse.m2e.core.maven2Nature</nature>
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
  </natures>

Наслаждайтесь!

Почему?если вы проверите этот несуществующий каталог, то "../.metadata/blah/blah/tmp0/wtpwebapps/YOURPROJECT/" пусто: тогда ваша сборка не создает WAR ... !!! Поскольку плагин maven не понимает, ОН ДОЛЖЕН!

Я обнаружил это после сравнения двух файлов .project из обоих проектов развертывания / развертывания ...

Надежда помогла!

3 голосов
/ 11 ноября 2013

У меня точно такая же проблема и точное исключение, но я решил эту проблему, просто указав тип пакета POM для войны, например «war», и щелкните правой кнопкой мыши проект и выберите «Maven> Обновить конфигурацию проекта», а затем повторно разверните этот веб-модуль для сервера Tomcat, вот и все!

3 голосов
/ 29 января 2013

Я удалил "проблемную папку"

1 голос
/ 23 мая 2015

Я был весьма озадачен этой проблемой, потому что до возникновения проблемы у меня работала другая зависимость от jar-файлов. Я использую Eclipse Luna, у которой уже была интеграция с m2e, и ни одно из вышеперечисленных решений не помогло мне.

Проблема возникла при добавлении новой зависимости jar в военный проект maven, но она все еще работала хорошо, когда она была закомментирована в pom. К счастью, мне удалось сравнить оба проекта, и в конечном итоге проблема была связана с отсутствующим аспектом проекта в новом проекте jar: Utility Module.

  1. Правая кнопка на проекте: Project Facets
  2. Отметьте «Модуль утилит» и сохраните
  3. Удалите приложение из tomcat и опубликуйте его снова.
1 голос
/ 10 декабря 2013

Я страдал от этой проблемы, но причина была в другом.Проблема возникла из wrong server name([Project Name] != [Server Name]).Я подумал, что могу выяснить, воссоздать Сервер .

Эту проблему можно решить, выполнив следующие действия:

  1. Удалить сервер: щелкните правой кнопкой мыши на [Severs]и удалите сервер.
  2. Удалить сервер: щелкните правой кнопкой мыши на [Project Explorer] и удалите сервер (вы создали).
  3. Очистить проект: меню [Project -> Clean]
  4. Создать сервер: правонажмите [Severs] и новый сервер.
  5. Редактирование server.xml: Редактирование server.xml для вашего веб-сервера.
  6. Добавление сервера: щелкните правой кнопкой мыши на [Severs] и удалите сервер.
1 голос
/ 29 июня 2012

Просто сделайте maven -> Обновите конфигурацию проекта и очистите / соберите из вашего затмения. Проект будет загружен.

0 голосов
/ 23 июня 2014

В моем случае было достаточно скопировать (из рабочего проекта):

  1. .settings
  2. .classpath
  3. .projects
0 голосов
/ 20 января 2014
Check this version:

<web-app version="**2.5**" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_**2_5**.xsd" metadata-complete="true">

and 

org.eclipse.wst.common.project.facet.core.xml

<installed facet="jst.web" version="**2.5**"/>

It can be incompatible with the chosen server. In my case when I tried to upgrade 3.0 tomcat 6.0 stopped working so I had to revert back to 2.5


so upgrade your server to a highter version or downgrade the web.xml version and run maven --> update project and try again
0 голосов
/ 20 ноября 2013

Шаги, которые я выполнил и будут работать на 100%:

  1. Очистите ваш сервер и рабочий каталог сервера, щелкнув правой кнопкой мыши на сервере
  2. Удалите папку сервера из проводника проектаwindow
  3. Удалить сервер из среды выполнения, т.е. из Eclipse -> Window -> Настройки -> Сервер -> Среды выполнения
  4. Завершить затмение и запустить снова
  5. Запустить файл насервер снова перенастроить сервер Apache
  6. Проблема решена
...