it-swarm.com.ru

Веб-приложение Eclipse Maven - больше не может работать на сервере

У меня есть проект веб-приложения Eclipse maven, который я смог щелкнуть правой кнопкой мыши и запустить на сервере, и он будет развернут на Tomcat. Недавно я выполнил 'maven-> Update conifgurations проекта', и теперь я НЕ могу развернуть и запустить проект как веб-приложение. Кто-нибудь видел это раньше? Единственный выход 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, но после очистки проекта я получаю ClassNotFoundException для библиотек, которые включаются как зависимости Maven:

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>
15
wuntee

Я нашел ответ на

Tomcat & Spring Web - исключение класса не найдено org.springframework.web.context.ContextLoaderListener

вам нужно отправить зависимости Maven на сервер, когда проект будет опубликован на нем.

Щелкните правой кнопкой мыши свой веб-проект в Project Explorer -> выберите "Свойства". В свойствах проекта выберите "Сборка развертывания".

На странице свойств сборки развертывания отображается содержимое, которое Eclipse будет опубликовано в виде собранного артефакта на сервере. Вы должны сообщить Eclipse, что вы хотите, чтобы все ваши зависимости Maven тоже публиковались.

Для этого нажмите кнопку "Добавить", затем выберите "Java Build Path Entries". Нажмите Next и выберите Maven Dependencies. Это опубликует файлы JAR зависимостей Maven в папку lib, когда Eclipse публикует ваш проект на WST-сервере.

15
ahmad

Три возможных решения. Я использовал все три в зависимости от того, как это пошло не так.

  1. Я решил эту проблему, удалив пружинные зависимости безопасности из моего 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, не играющий хорошо при блокировке файлов или чем-то еще.

  2. Альтернативное решение (проблема возникла снова и предыдущие решения не сработали). На этот раз я удалил каталог org/springframework из моего локального репозитория maven (тот, что находится в окне Eclipse-> Preferences-> Maven-> User Settings). Затем обновите зависимости Maven и продолжайте.

  3. Если вы выполнили "Maven-> Обновить конфигурацию проекта", и это может произойти из-за того, что ваши настройки "Deployment Assembly" не включают зависимости Maven. Перейдите в проект-> Свойства-> Сборка развертывания. Убедитесь, что в Maven Dependencies есть путь развертывания/WEB-INF/lib. Если нет, нажмите кнопку "Добавить" и найдите его в параметре пути сборки Java. Если его там нет, возможно, ваш путь сборки тоже поврежден (хотя со мной такого никогда не было).

4
Andy Chapman

Возможно, вы изменили <packaging> с war на что-то другое в случае аварии. Вы можете показать свой POM?

Можете ли вы также подтвердить, что у вас установлено Maven WTP Integration для WTP (это маловероятно, но, возможно, вы установили последнюю версию M2Eclipse без этого дополнительного и каким-то образом все работало, пока вы не обновили конфигурацию проекта) ?

2
Pascal Thivent

У меня были странные ошибки компиляции, которые вы имели в проекте WAR. По какой-то причине путь к классу был каким-то образом изменен, и он игнорировал другие проекты в моей рабочей области, от которых зависела WAR.

Единственное решение, которое в итоге сработало, - это стереть мое рабочее пространство, а в каждом проекте удалить .classpath, .project и .settings. Начиная с нового рабочего пространства это решено.

Я нашел ошибка упоминание чего-то похожего на это в трекере ошибок Maven WTP, но я не получил достаточно голосов, чтобы исправить это, я думаю.

2
Asaf Mesika

В свойствах проекта перейдите в "фасеты", нажмите "преобразовать во что-то", включите динамический веб-модуль и нажмите "Применить".

2
blank

Ничто из этого не помогло - я просто отключил разрешение рабочего пространства и занялся установкой зависимостей рабочего пространства, когда они устарели.

1
wuntee

Альтернативное решение (проблема возникла снова и предыдущие решения не сработали).

На этот раз я удалил каталог org/springframework из моего локального репозитория maven (в Eclipse Window-> Preferences-> Maven-> User Settings). Затем обновите зависимости Maven и продолжайте.

0
Andy Chapman

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

Сегодня я обнаружил, что он снова начал работать после запуска maven clean в проекте (например, mvn clean из командной строки). Попробуйте, чтобы увидеть, будет ли это работать для вас.

Это НЕ эквивалентно очистке Eclipse, поскольку она удаляет только несколько выбранных папок из целевого каталога, а не все.

0
Noremac

Я сталкивался с этой проблемой очень часто, быстрые исправления:

  • Щелкните правой кнопкой мыши проект -> Maven -> Обновить проект ...
  • Вкладка Eclipse Servers: остановить сервер, щелкнуть правой кнопкой мыши Tomcat v # -> Clean ... -> OK

Вот шаги по устранению неполадок, которые я использую, чтобы увидеть, что Eclipse фактически развертывает , когда он запускает Tomcat. Это актуально как на Марсе, так и на Неоне. (эти шаги предполагают, что вы хотя бы раз запустили свой проект с помощью "Запустить на сервере ...")

  1. Откройте настройки для запуска вашего проекта на Tomcat:
    Щелкните правой кнопкой мыши проект -> Запуск от имени -> Выполнить настройки ...
  2. Перейдите на вкладку аргументов и посмотрите в VM arguments, вы увидите что-то вроде этого: Run As Server Settings Arguments tab with -Dwtp.deploy Найдите значение -Dwtp.deploy. Для меня это было

D:\code\workspaceNeon\.metadata\.plugins\org.Eclipse.wst.server.core\tmp0\wtpwebapps

  1. Этот каталог содержит стандартную структуру развертывания веб-приложений. Откройте этот каталог в проводнике вашей ОС и проверьте его содержимое. Когда я посмотрел в своем WEB-INF/lib, я увидел, что большинство моих зависимостей отсутствовало
  2. Не забудьте выйти из этого каталога, когда вы закончите, иначе Eclipse получит ошибки при попытке изменить/обновить его

Теперь пришло время решить проблему. Давайте посмотрим, что Eclipse должен развертывать:

  1. Откройте настройки сборки развертывания для вашего проекта:

    Щелкните правой кнопкой мыши проект -> Свойства -> Сборка развертывания Deployment Assembly with Maven Dependencies

    1. Maven Dependencies является критическим пунктом выше. Если это отсутствует, закройте диалоговое окно и выполните обновление maven: щелкните правой кнопкой мыши проект -> Maven -> Обновить проект ...

    2. Теперь, когда мы сделали обновления, давайте очистим рабочий каталог сервера вручную и переиздадим. Это не всегда может быть необходимо, но это хороший способ убедиться, что все синхронизировано между тем, что показано в Deployment Assembly, и тем, что фактически развернуто:

      • В Eclipse перейдите на вкладку Серверы. Если вы не видите его в своем текущем макете Eclipse, выполните меню "Окно" -> "Показать представление" -> "Другие" -> поиск "Серверы" Eclipse servers tab
      • Щелкните правой кнопкой мыши Tomcat v # ... и выберите "Очистить ...". Нажмите OK в диалоговом окне подтверждения Eclipse server clean confirm dialog
      • Щелкните правой кнопкой мыши Tomcat v # ... и выберите "Опубликовать".
      • Запустите сервер и протестируйте. Если проблемы не устранены, вернитесь в каталог wtp.deploy и проверьте, что не так.

Удачи!

0
Dave B

У меня была та же проблема сегодня, для меня это помогает переустановить Apache в Eclipse, а затем перестроить/обновить проект

0
Lars