2016-05-04 68 views
0

我想解决这个问题大约一周,所以我会非常感谢任何帮助。 我正在开发一个Eclipse插件。我需要阅读我的代码中的pom.xml文件。为此,我需要三个Maven依赖关系。 该项目创建为插件项目,然后使用m2eclipse转换为Maven项目。这是我的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-PackageRequire-Bundle清单标题完成的。我不知道maven/tycho是否会自动为你做这件事。

此外,提供这些类的插件/软件包需要在其清单中指定Export-Package

相关问题