2016-05-04 3 views
0

Я пытаюсь решить это примерно неделю, поэтому я буду очень благодарен за любую помощь. Я разрабатываю плагин Eclipse. Мне нужно прочитать файл pom.xml в моем коде. Для этого мне нужны три зависимости maven. Проект был создан как проект плагина, а затем преобразован в проект Maven с использованием m2eclipse. Это мой POM:NoClassDefFoundError при запуске плагина в новом приложении Eclipse

<properties> 
<tycho-version>0.25.0</tycho-version> 

<manifest-location>META-INF</manifest-location> 

<name>${project.name}</name> 
<version>${project.version}</version> 
</properties> 

<repositories> 
    <repository> 
     <id>eclipse-mars</id> 
     <layout>p2</layout> 
     <url>http://download.eclipse.org/releases/mars</url> 
    </repository> 
</repositories> 

<build> 
<sourceDirectory>src</sourceDirectory> 
<plugins> 
    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
    </plugin> 
</plugins> 
</build> 
<dependencies> 
<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-model</artifactId> 
    <version>3.3.9</version> 
</dependency> 
<dependency> 
    <groupId>org.codehaus.plexus</groupId> 
    <artifactId>plexus-utils</artifactId> 
    <version>3.0.22</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-core</artifactId> 
    <version>3.3.9</version> 
</dependency> 
</dependencies> 
</project> 

Теперь, когда я запускаю новое приложение Eclipse для тестирования плагина. Это генерирует исключение: ava.lang.NoClassDefFoundError: org/apache/maven/model/io/xpp3/MavenXpp3Reader

То же самое происходит с Apache HttpClient как зависимость от Maven. Для этого я смог решить это, импортировав пакет пакетов org.apache.http. Я также пробовал this, который не помог. Это действительно меня беспокоит, потому что во всех статьях и учебниках написано, что он должен работать. (Что m2eclipse автоматически управляет зависимостями maven).

ответ

0

Я не знаком с Maven, но в качестве подключаемого модуля Eclipse (osgi bundle), чтобы получить доступ к классу во время выполнения, вам нужно будет добавить зависимость от пакета или пакета, который предоставляет эти классы.

Это делается в файле плагина/META-INF/MANIFEST.MF с заголовком манифеста Import-Package или Require-Bundle. Я не знаю, делает ли maven/tycho это автоматически для вас или нет.

Кроме того, подключаемый модуль/комплект, который предоставляет эти классы, должен указывать Export-Package в их манифесте.

Смежные вопросы