Подтвердить что ты не робот

Не удалось запустить "На сервере" веб-приложение из Eclipse

При запуске моего проекта WebApp из Eclipse большую часть времени он работает правильно. Но если по ошибке остановить сервер, я убью его в режиме "Консоль" вместо "Stop" Server из "Servers" View. Выполняя чистый проект, я получаю это

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)

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

4b9b3361

Ответ 1

Я прекратил использовать этот метод запуска моего webapp. Вместо этого я использую mvn tomcat:run. Намного легче. Хотя я не знаю, как отлаживать.

Ответ 2

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

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

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

Ну, пусть начнется:

Сначала, пока до свидания Конфигурация сервера:

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

2) Очистите рабочий каталог вашего сервера (щелкните правой кнопкой мыши на сервере и выберите "Рабочий каталог сервера Tomcat" )

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

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

5) Полностью удалите проект/папку "Серверы" (показано на вкладке "Проводник проекта" )

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

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

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

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

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

В-третьих, интеграция Instal m2e WTP (да, это не так, как "default". Один день, чтобы понять это):

1) Открыть Maven "Discovery" (Eclipse > Windows > Предпочтения > Maven > Открытие)

2) Нажмите кнопку "Открыть каталог" (появится окно "m2e Marketplace" )

3) Прокрутите страницу вниз до тех пор, пока не найдете опцию "WTP Integration", затем "проверьте"!

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

5) Появится "экран плагина". "Следующий", "Следующий", "Согласен", "бла-бла-бла-бла..." /

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

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

В-пятых, реинтеграция maven:

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

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

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

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

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

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

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

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

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

Ответ 3

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

Это отлично работает:

Добавьте в свой файл .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 из разных проектов развертывания/не развертывания...

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

Ответ 4

Я удалил "папку проблем".metadata.plugins\org.eclipse.wst.server.core\ tmp0\и теперь он работает:)

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

  • Удалить сервер: щелкните правой кнопкой мыши по [Severs] и удалите сервер.
  • Удалить сервер: щелкните правой кнопкой мыши по [Project Explorer] и удалите сервер (вы создали).
  • Очистить проект: меню [Project -> Clean]
  • Создать сервер: щелкните правой кнопкой мыши на [Severs] и новом сервере.
  • Изменить server.xml: Изменить server.xml на ваш веб-сервер.
  • Добавить сервер: щелкните правой кнопкой мыши по [Severs] и удалите сервер.

Ответ 8

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

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

  • Правая кнопка в проекте: Границы проекта
  • Проверьте "Утилитный модуль" и сохраните
  • Удалите приложение из tomcat и опубликуйте его снова.

Ответ 9

Проверить Tomcat doc для базы документов xyz не существует или не является читаемым каталогом:

База документов не существует или не является читаемым каталогом URL-адрес заданный параметром war, должен идентифицировать каталог на этом сервер, который содержит "распакованную" версию веб-приложения или абсолютный URL-адрес файла архива веб-приложений (WAR), который содержит это приложение. Исправьте значение, указанное параметром войны.

Можете ли вы вручную выполнить "Очистить...", а затем "Опубликовать" (из контекстного меню в представлении Tomcat на серверах) после завершения чистого проекта?

Ответ 10

Эта проблема может быть вызвана тем, что локальный проект не синхронизируется с вашим репозиторием кода. Я бы предложил обновить/синхронизировать ваш проект.

Ответ 11

Я столкнулся с той же проблемой, и сервер очистки и воссоздания не помогает. Но когда я развернул другой проект, он смог начать успешно. После большого сравнения я обнаружил различия в файлах .project. Поэтому я копирую содержимое файла .project рабочего проекта в тот, который имеет проблему, добавляет его обратно на сервер и работает. Ниже приведено содержимое файла .project. Обратите внимание, что вам нужно соответствующим образом изменить название проекта:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Project Name</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
    <buildCommand>
        <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.wst.common.project.facet.core.builder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.wst.validation.validationbuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>
<natures>
    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
</natures>

Ответ 12

Пробовал все без везения. У меня только один проект в моем затмении. Закройте затмение, переименуйте каталог eclipse, снова распакуйте его, запустите в новом eclipse. Это сработало.

Нет, это не эффективно.

Ответ 13

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

  • Очистите сервер и рабочий каталог вашего сервера, щелкнув правой кнопкой мыши на сервере.
  • Удалить папку сервера из окна проводника проекта.
  • Удалить сервер из среды выполнения, т.е. из Eclipse → Window → Preferences → Server → Runtime Environments
  • Заткните затмение и начните снова
  • Запустите файл на сервере, снова настройте сервер Apache
  • Проблема решена.

Ответ 14

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

Ответ 15

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

  • .settings
  • .classpath
  • .projects