maven, eclispse и wtp сломались без причины: он перестал помещать зависимые jar-файлы mvn в WEB-INF / lib - PullRequest
3 голосов
/ 20 октября 2010

Я запускаю eclipse (идентификатор сборки Helios: 20100617-1415), сонотип maven для версии 2 затмения (0.1.0.20100xxx) в течение многих месяцев без проблем.

Я могу выполнить «mvn install» в командной строке и получить идеальную войну, и я могу без проблем запустить webapp в eclipse local tomcat.

Тогда этим утром я затопил кота в затмении, нажал на сервет и получил много класса, которого не нашли. Смотря где eclipse помещает библиотеки в веб-приложение .metadata.plugins \ org.eclipse.wst.server.core \ tmp1 \ wtpwebapps \ ge-api \ WEB-INF \ lib, я не вижу ни одной из стандартных зависимых библиотек (например, log4j).

Я сделал свою обычную мвн мантру :

  1. Закрыть эльципу
  2. перейти в корень родительского проекта
  3. mvn clean
  4. mvn install
  5. Mvn Elcipse: Eclipse
  6. перезапустить затмение
  7. обновить все проекты, начиная с родительского.

Это не помогло.

Я перепробовал все доступные опции m2eclipse - ничего не помогло.

Итак, я попробовал мантру tomcat :

  1. Открытое затмение
  2. перейти на вкладку сервера
  3. удалить webapp
  4. окно-> настройки-> сервер-> среды выполнения
  5. удалить кота 6
  6. перезапустить затмение
  7. снова добавить кота 6.
  8. снова добавить в него веб-приложение.
  9. перезапустите сервер Tomcat в Eclipse

Это привело к одной и той же проблеме: мавен и эльципа ненавидят друг друга и отказываются говорить. И я изменил не одну вещь, даже строку комментариев, между тем, что это работает, и это не работает.

Я проверил каждый конфиг - необходимые фляги правильно указаны как зависимости в каждом нужном месте. См. Ниже - все банки находятся на пути к классам - правильно поставил maven.

look, all the jars are put in the class path by maven

есть также вкладка "заказ и экспорт", хотя я понятия не имею, что означает часть экспорта:

alt text

В приведенном выше диалоге рядом с библиотеками есть флажки, поэтому я попытался нажать на них (эй, я в отчаянии). Когда я делаю это и нажимаю ОК, я всегда получаю эту ошибку:

alt text

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

После 10 часов разрыва волос я что-то заметил в предупреждениях:

Описание Путь к ресурсу Тип местоположения Запись пути к классам M2_REPO / aopalliance / aopalliance / 1.0 / aopalliance-1.0.jar не будет экспортирована или опубликована. Runtime ClassNotFoundExceptions может привести. ge-api P / ge-api Сообщение средства проверки зависимостей пути к классам

Что на земле вызвало это?

Есть много сообщений об этой ошибке, которые, кажется, говорят, что вы должны

«открыть интерфейс зависимостей модуля J2EE» и выбрать запись пути к классу в таблице потенциальных записей (разрешенные JAR-файлы будут упакованы либо в WEB-INF / lib, либо в корень EAR, на который ссылается путь к классу Manifest, в зависимости от типа зависимости "

Однако у меня нет ничего похожего на «зависимости модуля J2EE» где-либо в затмении.

Вот мои грани / свойства:

alt text

Смотрите, нет J2EE и нет опций конфигурации.

Так что в отчаянии я пробую предупреждения «быстрое исправление».

"Пометить связанную необработанную запись пути к классу как зависимость публикации / экспорта."

Раньше это работало, так почему я должен делать это сейчас? В любом случае, я пробую это на одной из 10 библиотек для одного из 4 подпроектов, которые имеют идентичные зависимости, которые до сих пор управлялись родительским помошником (да, мне придется делать это взломать 40 раз), и теперь я вижу, 2) вещи имеют случилось:

  1. Добавлена ​​зависимость "публикация / экспорт" на вкладке библиотеки пути Java Build:

alt text

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

  1. Это дает мне больше предупреждений:

"Описание Путь к ресурсу Расположение Тип Запись пути к классу M2_REPO / log4j / log4j / 1.2.15 / log4j-1.2.15.jar помечен для публикации/ export, но не экспортируется в путь к классам проекта. Видимость пути к классам в Eclipse и во время выполнения будет отличаться. ge-core P / ge-core Сообщение средства проверки зависимостей Classpath "

Какой смысл использовать maven дляуправлять classpaths?

Так что теперь я взламываю, пока что-то не работает, без надежды вернуться ко вчерашнему дню, когда все работает без проблем: я создал проект с maven, использовал файлы pom, чтобы делать все, и затмение продолжалось,До сих пор.

Вот мой родительский 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 xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.skillkash.ge</groupId>
<artifactId>ge-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>ge-parent</name>
<modules>
 <module>ge-api</module>
 <module>ge-core</module>
 <module>ibo-core</module>
</modules>
<build>
<plugins>
  <plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
    <source>1.6</source>
    <target>1.6</target>
   </configuration>
  </plugin>
 </plugins>
</build>
<dependencies>
<dependency>
 <groupId>log4j</groupId>
 <artifactId>log4j</artifactId>
 <version>1.2.15</version>
 <exclusions>
  <exclusion>
   <groupId>javax.jms</groupId>
   <artifactId>jms</artifactId>
  </exclusion>
  <exclusion>
   <groupId>com.sun.jdmk</groupId>
   <artifactId>jmxtools</artifactId>
  </exclusion>
  <exclusion>
   <groupId>com.sun.jmx</groupId>
   <artifactId>jmxri</artifactId>
   </exclusion>
  </exclusions>
 </dependency>
 <dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>5.12.1</version>
 </dependency>
</dependencies>
</project>

Вот мой локальный веб-приложение pom:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
    <artifactId>ge-parent</artifactId>
    <groupId>com.skillkash.ge</groupId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.skillkash.ge</groupId>
<artifactId>ge-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>ge-api Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.4</version>
    <scope>provided</scope>
  </dependency>    
  <dependency>
   <groupId>com.skillkash.ge</groupId>
   <artifactId>ibo-core</artifactId>
    <version>0.0.1-SNAPSHOT</version>
   <scope>compile</scope>
  </dependency>
  <dependency>
   <groupId>com.skillkash.ge</groupId>
   <artifactId>ge-core</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   </dependency>
   </dependencies>
 <build>
    <finalName>ge-api</finalName>
</build>
</project>

И вот мой макет проекта в eclipse:

alt text

Кто-нибудь знает, что пошло не так, и как это исправить?

Ответы [ 4 ]

3 голосов
/ 20 октября 2010

Мои предложения:

  • НЕ используйте eclipse:eclipse при использовании m2eclipse ( это не поддерживается )
  • удалить проект из вашей рабочей области и удалить .eclipse, .classpath, .settings из файловой системы
  • повторно импортировать проект в рабочее пространство с помощью Импорт ...> Существующие проекты Maven
  • не связывайтесь ни с чем вручную

О, и как примечание, я бы лично настроил WTP на , чтобы получить полный контроль над Tomcat вместо , используя метаданные рабочей области (но это не должно не является основной причиной неприятностей).

1 голос
/ 20 октября 2010

Две идеи:

1) Eclipse Mantra : Запустите Eclipse.Выберите Файл-> Закрыть все.Закройте и перезапустите Eclipse.

2) Предполагая, что вы используете исходную систему контроля версий: удалите Eclipse.Удалить Tomcat.Удалить рабочее пространство.Переустановите Eclipse (вы можете захотеть сохранить упакованный Eclipse со всеми пакетами, которые вам необходимо предварительно установить для этого, если у вас возникнут такие проблемы (как у меня)Переустановите Tomcat: я рекомендую просто разархивировать Tomcat куда-нибудь и запускать / останавливать его из Eclipse, а не устанавливать систему Tomcat.Проверьте ваш проект из вашего исходного хранилища;надеюсь последняя версия работает, если не попробовать более старую.

0 голосов
/ 08 февраля 2013

Для меня это обычно работает, если в Eclipse не работает проект Maven:

  1. «Правый клик» по проекту
  2. -> "Maven"
  3. -> "Обновить проект ..."
  4. -> "ОК"
0 голосов
/ 08 февраля 2013

Всякий раз, когда я нахожу некоторые проблемы с библиотеками, это то, что я делаю, и это работает: (примечание: я не использую плагин maven eclipse, который почти никогда не работает для меня)

  1. зависимость mvn: resol
  2. mvn eclipse: eclipse
  3. Обновить проект Eclipse.

    • привет, Shoubhik
...