Ответ 1
Я прекратил использовать этот метод запуска моего webapp.
Вместо этого я использую mvn tomcat:run
. Намного легче. Хотя я не знаю, как отлаживать.
При запуске моего проекта 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)
Пожалуйста, помогите восстановиться после этого.
Я прекратил использовать этот метод запуска моего webapp.
Вместо этого я использую mvn tomcat:run
. Намного легче. Хотя я не знаю, как отлаживать.
У меня было тяжелое время, чтобы заставить его работать, но благодаря "Александру Погребняку" (см. развертывание военного файла на сервере 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 (можно?)
Не делай этих сумасшедших космических обходных решений!!
Это отлично работает:
Добавьте в свой файл .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 из разных проектов развертывания/не развертывания...
Надежда помогла!
Я удалил "папку проблем".metadata.plugins\org.eclipse.wst.server.core\ tmp0\и теперь он работает:)
У меня есть точно такая же проблема и точное исключение, но я решил проблему, просто указав тип пакета POM для войны, как "война", и щелкните правой кнопкой мыши проект и выберите "Maven > Обновить конфигурацию проекта", а затем повторно разверните что веб-модуль для сервера tomcat, что он!
Просто сделайте maven → Обновите конфигурацию проекта и очистите/создайте из своего eclipse. Проект будет загружен.
Я страдал от этой проблемы, но причина была другая.
Проблема возникла из wrong server name([Project Name] != [Server Name])
.
Я думал, что я могу понять, воссоздать сервер.
Эта проблема может быть решена с помощью следующих действий:
[Severs]
и удалите сервер.[Project Explorer]
и удалите сервер (вы создали).[Project -> Clean]
[Severs]
и новом сервере.server.xml
на ваш веб-сервер.[Severs]
и удалите сервер.Я был озадачен этой проблемой, потому что у меня была другая зависимость от jar, прежде чем возникла проблема. Я использую Eclipse Luna, у которого уже была интеграция m2e, и ни один из вышеперечисленных решений не работал у меня.
Проблема возникла при добавлении новой зависимости jar к военному проекту maven, но она все еще работала хорошо, когда этот был прокомментирован в pom. К счастью, мне удалось сравнить оба проекта, и в конечном итоге проблема была связана с отсутствующим аспектом проекта в новом проекте jar: Utility Module.
Проверить Tomcat doc для базы документов xyz не существует или не является читаемым каталогом:
База документов не существует или не является читаемым каталогом URL-адрес заданный параметром war, должен идентифицировать каталог на этом сервер, который содержит "распакованную" версию веб-приложения или абсолютный URL-адрес файла архива веб-приложений (WAR), который содержит это приложение. Исправьте значение, указанное параметром войны.
Можете ли вы вручную выполнить "Очистить...", а затем "Опубликовать" (из контекстного меню в представлении Tomcat на серверах) после завершения чистого проекта?
Эта проблема может быть вызвана тем, что локальный проект не синхронизируется с вашим репозиторием кода. Я бы предложил обновить/синхронизировать ваш проект.
Я столкнулся с той же проблемой, и сервер очистки и воссоздания не помогает. Но когда я развернул другой проект, он смог начать успешно. После большого сравнения я обнаружил различия в файлах .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>
Пробовал все без везения. У меня только один проект в моем затмении. Закройте затмение, переименуйте каталог eclipse, снова распакуйте его, запустите в новом eclipse. Это сработало.
Нет, это не эффективно.
Шаги, которые я выполнил, будут работать 100%:
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
В моем случае достаточно было скопировать (из рабочего проекта):