2016-05-04 8 views
0

Ich versuche das jetzt seit etwa einer Woche zu lösen, daher werde ich für jede Hilfe sehr dankbar sein. Ich entwickle ein Eclipse-Plugin. Ich muss die pom.xml-Datei in meinem Code lesen. Um dies zu tun, brauche ich drei Maven-Abhängigkeiten. Das Projekt wurde als Plugin-Projekt erstellt und dann mithilfe von m2eclipse in Maven-Projekt konvertiert. Das ist mein POM:NoClassDefFoundError beim Ausführen des Plugins in der neuen Eclipse-Anwendung

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

Jetzt wenn ich neue Eclipse-App zum Testen des Plugins ausführen. Es löst eine Ausnahme aus: ava.lang.NoClassDefFoundError: org/apache/maven/modell/io/xpp3/MavenXpp3Reader

Gleiches gilt für Apache HttpClient als Maven-Abhängigkeit. Dafür konnte ich es lösen, indem ich eine Menge org.apache.http Pakete importiere. Ich habe auch versucht this, die nicht geholfen hat. Das nervt mich wirklich, weil in allen Artikeln und Tutorials geschrieben wird, dass es funktionieren sollte (das m2eclipse verwaltet Maven-Abhängigkeiten automatisch).

Antwort

0

Ich bin nicht vertraut mit Maven, aber als Eclipse-Plug-in (OSGI-Bundle), um auf die Klasse zur Laufzeit zuzugreifen, müssen Sie eine Abhängigkeit zu dem Paket oder Bundle hinzufügen, die diese Klassen bietet.

Dies geschieht in der Datei plugin/META-INF/MANIFEST.MF mit einem Manifestkopf Import-Package oder Require-Bundle. Ich weiß nicht, ob Maven/Tycho das automatisch für Sie tut oder nicht.

Auch das Plug-in/bundle, das diese Klassen bereitstellt, muss ein Export-Package in ihrem Manifest angeben.

Verwandte Themen