Я запускаю 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).
Я сделал свою обычную мвн мантру :
- Закрыть эльципу
- перейти в корень родительского проекта
- mvn clean
- mvn install
- Mvn Elcipse: Eclipse
- перезапустить затмение
- обновить все проекты, начиная с родительского.
Это не помогло.
Я перепробовал все доступные опции m2eclipse - ничего не помогло.
Итак, я попробовал мантру tomcat :
- Открытое затмение
- перейти на вкладку сервера
- удалить webapp
- окно-> настройки-> сервер-> среды выполнения
- удалить кота 6
- перезапустить затмение
- снова добавить кота 6.
- снова добавить в него веб-приложение.
- перезапустите сервер Tomcat в Eclipse
Это привело к одной и той же проблеме: мавен и эльципа ненавидят друг друга и отказываются говорить. И я изменил не одну вещь, даже строку комментариев, между тем, что это работает, и это не работает.
Я проверил каждый конфиг - необходимые фляги правильно указаны как зависимости в каждом нужном месте. См. Ниже - все банки находятся на пути к классам - правильно поставил maven.
![look, all the jars are put in the class path by maven](https://i.stack.imgur.com/l6oTR.gif)
есть также вкладка "заказ и экспорт", хотя я понятия не имею, что означает часть экспорта:
В приведенном выше диалоге рядом с библиотеками есть флажки, поэтому я попытался нажать на них (эй, я в отчаянии). Когда я делаю это и нажимаю ОК, я всегда получаю эту ошибку:
![alt text](https://i.stack.imgur.com/YkdGZ.gif)
Я удалил 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](https://i.stack.imgur.com/yABuk.gif)
Смотрите, нет J2EE и нет опций конфигурации.
Так что в отчаянии я пробую предупреждения «быстрое исправление».
"Пометить связанную необработанную запись пути к классу как зависимость публикации / экспорта."
Раньше это работало, так почему я должен делать это сейчас? В любом случае, я пробую это на одной из 10 библиотек для одного из 4 подпроектов, которые имеют идентичные зависимости, которые до сих пор управлялись родительским помошником (да, мне придется делать это взломать 40 раз), и теперь я вижу, 2) вещи имеют случилось:
- Добавлена зависимость "публикация / экспорт" на вкладке библиотеки пути Java Build:
![alt text](https://i.stack.imgur.com/oPfGp.gif)
Я не могу найти способ сделать это вручную, если я не использовал систему автоматического исправления.
- Это дает мне больше предупреждений:
"Описание Путь к ресурсу Расположение Тип Запись пути к классу 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](https://i.stack.imgur.com/ueo7z.gif)
Кто-нибудь знает, что пошло не так, и как это исправить?