Веб-приложение Eclipse Maven - больше не может работать на сервере
У меня есть проект maven eclipse webapp, который я смог щелкнуть правой кнопкой мыши и "Запустить на сервере", и он будет развернут на tomcat. Недавно я сделал "maven- > Update conifgurations", и теперь я НЕ могу развернуть и запустить проект как webapp. Кто-нибудь видел это раньше? Единственный выход tomcat выглядит следующим образом: он даже не похож на попытку развернуть приложение.
Apr 14, 2010 3:58:54 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: .:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
Apr 14, 2010 3:58:54 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:taac-web' did not find a matching property.
Apr 14, 2010 3:58:54 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Apr 14, 2010 3:58:54 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 402 ms
Apr 14, 2010 3:58:54 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Apr 14, 2010 3:58:54 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.24
Apr 14, 2010 3:58:54 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Apr 14, 2010 3:58:54 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Apr 14, 2010 3:58:54 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/14 config=null
Apr 14, 2010 3:58:54 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 247 ms
POM по-прежнему настроен на WAR, но после очистки проекта я получаю ClassNotFoundExceptions для библиотек, которые включены в Maven Dependencies:
SEVERE: Error configuring application listener of class org.springframework.security.web.session.HttpSessionEventPublisher
java.lang.ClassNotFoundException: org.springframework.security.web.session.HttpSessionEventPublisher
Вот мой POM:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cable.wuntee.neto.nse</groupId>
<artifactId>taac-web</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>taac-web JEE5 Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.0.1.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.16</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>3.0.2.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-acl</artifactId>
<version>3.0.2.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.0.2.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>3.0.2.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
<version>1.3.0.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap</artifactId>
<version>1.3.0.RELEASE</version>
<type>pom</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-ldap</artifactId>
<version>3.0.2.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.cable.wuntee.neto.nse</groupId>
<artifactId>wuntee.neto.nse-ldap</artifactId>
<version>1.0-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.cable.wuntee.neto.nse</groupId>
<artifactId>wuntee.neto.nse-cada</artifactId>
<version>1.0-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.cable.wuntee.neto.nse</groupId>
<artifactId>wuntee.neto.nse-sams</artifactId>
<version>2.0-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.1.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.0.1.RELEASE</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
<finalName>taac-web</finalName>
</build>
</project>
Ответы
Ответ 1
Я нашел ответ на
Tomcat и Spring Веб-класс не найден Exception org.springframework.web.context.ContextLoaderListener
вам нужно направить зависимости Maven на сервер, когда проект будет опубликован.
Щелкните правой кнопкой мыши на своем веб-проекте в Project Explorer → выберите "Свойства". В свойствах проекта выберите "Сборка развертывания".
На странице свойств Ассамблеи развертывания отображается контент, который будет опубликован как собранный артефакт Eclipse на сервер. Вы должны сказать Eclipse, что вы хотите, чтобы все ваши зависимости Maven были опубликованы тоже.
Чтобы сделать это, нажмите кнопку "Добавить", затем выберите "Java Build Path Entries". Нажмите "Далее" и выберите "Зависимости Maven". Это опубликует JAR файлы зависимостей Maven в папке lib, когда Eclipse публикует ваш проект на сервере WST.
Ответ 2
Три возможных решения. Я использовал все три в зависимости от того, как это пошло не так.
-
Я решил это, удалив spring зависимостей безопасности от моего POM (у меня есть spring -security-taglibs и spring -security-config, которые тянут все, что мне нужно), сохранили POM, пусть Maven сделает это, а затем снова добавит их обратно, пусть Maven снова получит зависимости и перезапустит сервер в Eclipse. Когда проблема возникает, в каталоге зависимостей Maven в проекте Eclipse, кажется, отсутствует артефакт spring -security-web (который содержит org.springframework.security.web.session.HttpSessionEventPublisher). Для меня это происходит только при запуске Eclipse после перезагрузки моего ПК, поэтому я предполагаю, что это Windows (Vista), а плагин Eclipse M2Eclipse не играет хорошо в блокировке файлов или что-то в этом роде.
-
Альтернативное решение (проблема повторилась, и предыдущие решения не сработали). На этот раз я удалил каталог org/springframework из моего локального репозитория maven (тот, который находится в Eclipse Window- > Preferences- > Maven- > User Settings). Затем обновите зависимости Maven и wahey, и мы снова пойдем.
-
Если вы сделали "Maven- > Update Project Configuration", и это случается, это может случиться, потому что ваши настройки "Развертывание развертывания" не включают зависимости Maven. Перейдите в проект- > properties- > блок развертывания. Убедитесь, что Maven Dependencies находится там и имеет путь развертывания /WEB -INF/lib. Если нет, нажмите "Добавить" и найдите его в разделе "путь сборки Java". Если это не так, ваш путь сборки, вероятно, тоже поврежден (хотя это никогда не случалось со мной).
Ответ 3
Возможно, вы изменили <packaging>
от war
на что-то другое за каждый несчастный случай. Можете ли вы показать свой POM?
Можете ли вы также подтвердить, что у вас установлена Maven WTP Integration для WTP (это маловероятно, но, возможно, вы установили последнюю версию M2Eclipse без лишних и, как-то, все работало, пока вы не обновили конфигурация проекта)?
Ответ 4
У меня были такие странные ошибки компиляции, которые у вас были в проекте WAR. По какой-то причине путь класса был каким-то образом изменен, и он игнорировал другие проекты в моей рабочей области, от которых зависела WAR.
Единственное решение, которое в конечном итоге работало, состояло в том, чтобы стереть мое рабочее пространство и на каждом проекте удалить .classpath,.project и .settings. Начиная с нового рабочего пространства, он решил.
Я обнаружил ошибку в которой упоминается нечто подобное этому в Maven WTP-трекере, но я не получил достаточного количества голосов для исправления Думаю.
Ответ 5
В свойствах проекта перейдите к "facets", нажмите "конвертировать" что-нибудь, включите динамический веб-модуль и нажмите "Apply".
Ответ 6
Ни один из них не помог - я просто отключил разрешение рабочей области и занимался установкой зависимостей рабочей области, когда они устарели.
Ответ 7
Альтернативное решение (проблема повторилась, и предыдущие решения не сработали).
На этот раз я удалил каталог org/springframework из моего локального репозитория maven (тот, который находится в Eclipse Window- > Preferences- > Maven- > User Settings). Затем, обновляя зависимости Maven и wahey, мы снова идем.
Ответ 8
У меня была такая же проблема сегодня, для меня это помогает переустановить apache в eclipse, чтобы восстановить/обновить проект после
Ответ 9
Хорошо, я тоже немного с этим справился. Я не думаю, что существует много окончательного ответа, и какое-то время я просто удалю проект и повторно импортирую его, поскольку он будет работать каждый раз.
Сегодня я обнаружил, что он снова начал работать после запуска maven в проекте (mvn clean из командной строки, например). Попробуйте проверить, будет ли это работать для вас.
Это НЕ эквивалентно чистоте eclipse, поскольку он удаляет только несколько папок из целевого каталога, а не все.
Ответ 10
Я сталкивался с этой проблемой каждый раз, быстрые исправления:
- Проект правой кнопки мыши → Maven → Обновить проект...
- Вкладка Eclipse Servers: остановить сервер, щелкните правой кнопкой мыши Tomcat v # → Очистить... → OK
Ниже приведены действия по устранению неполадок, которые я использую для просмотра того, что Eclipse фактически развертывает при запуске tomcat. Это актуально как Марс и Неон. (эти шаги предполагают, что вы запустили свой проект хотя бы один раз, используя "Запуск на сервере..." )
- Поднимите настройки для запуска проекта на tomcat:
Проект правой кнопки мыши → Запустить как → Запустить конфигурации...
- Перейдите на вкладку аргументов и посмотрите в аргументы VM, вы увидите что-то вроде этого:
Найдите значение -Dwtp.deploy
. Для меня это было
D:\code\workspaceNeon\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
- Этот каталог содержит стандартную структуру развертывания webapp. Откройте этот каталог в вашем обозревателе файлов ОС и проверьте содержимое. Когда я посмотрел в свой
WEB-INF/lib
, я видел, что большинство моих зависимостей отсутствовали.
- Обязательно выйдите из этого каталога, когда вы закончите, иначе eclipse получит ошибки, пытающиеся изменить/обновить его.
Теперь пришло время исправить проблему. Давайте посмотрим, что предполагается использовать Eclipse:
Удачи!