2016-05-04 11 views
0

これを約1週間解決しようとしていますので、何か助けてくれたことにとても感謝しています。 私はEclipseプラグインを開発中です。私は自分のコードでpom.xmlファイルを読む必要があります。これを行うには、3つの依存関係が必要です。 プロジェクトはプラグインプロジェクトとして作成され、m2eclipseを使用してMavenプロジェクトに変換されました。これは私のPOMです:新しいEclipseアプリケーションでプラグインを実行しているときにNoClassDefFoundError

<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

同じことがMaven依存関係としてApache HttpClientにあります。このため、私はorg.apache.httpパッケージの束をインポートすることでそれを解決することができました。 私も助けてくれなかったthisを試しました。 すべての記事とチュートリアルが書かれているので、これはうまくいくはずです(m2eclipseは自動的にmaven依存関係を管理します)。

答えて

0

私はMavenに精通していませんが、実行時にクラスにアクセスするにはEclipseプラグイン(osgiバンドル)として、これらのクラスを提供するパッケージまたはバンドルに依存関係を追加する必要があります。

これは、プラグイン/ META-INF/MANIFEST.MFファイルのImport-PackageまたはRequire-Bundleマニフェストヘッダーで行われます。 maven/tychoが自動的にこれを行うかどうかはわかりません。

また、これらのクラスを提供するプラグイン/バンドルでは、マニフェストにExport-Packageを指定する必要があります。