将嵌入式插件jar文件添加到项目中

时间:2015-10-13 12:03:42

标签: java eclipse jar eclipse-plugin eclipse-rcp

我需要通过修改classpath条目向我的插件添加一些jar库到项目。但我找不到办法做到这一点。我试图在我的插件的lib文件夹中嵌套jar lib,但是当插件打包为Jar并在eclipse IDE上部署时,我无法访问它们。 任何方案? 这样做的正确方法是什么?

这是将lib添加到目标项目的代码:

private void addLocalLibrary(IProject parent, String name, boolean source, boolean javadoc)
    throws CoreException, URISyntaxException, IOException {
IClasspathEntry[] oldEntries = this.javaProject.getRawClasspath();
// +1 for our src/main/java entry
IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1];
System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length);

String pluginDir = new File(Activator.getPluginDir()).getAbsolutePath().replace("file:", "");
IPackageFragmentRoot lib = this.javaProject.getPackageFragmentRoot(pluginDir + "/" + name);
IPackageFragmentRoot src = null;
if (source) {
    src = this.javaProject.getPackageFragmentRoot((pluginDir + "/" + name).replace(".jar", "-sources.jar"));
}
IClasspathAttribute atts[] = null;
if (javadoc) {
    IPackageFragmentRoot doc = this.javaProject
        .getPackageFragmentRoot((pluginDir + "/" + name).replace(".jar", "-javadoc.jar"));
    atts = new IClasspathAttribute[] {
        JavaCore.newClasspathAttribute("javadoc_location", doc.getPath().toString()), };
}
IPath srcPath = src == null ? null : src.getPath();
newEntries[oldEntries.length] = JavaCore.newLibraryEntry(lib.getPath(), srcPath, null, null, atts, true);
this.javaProject.setRawClasspath(newEntries, null);
}

1 个答案:

答案 0 :(得分:1)

您可以从现有库jar创建插件,并将其添加到要使用库代码的插件的依赖项中。

为此,请使用文件>下的现有JAR存档向导插件。新>项目...>插件开发>现有JAR存档中的插件

这样您就可以在插件项目中包装现有的jar。您也可以使用此插件作为您自己的代码的基础。如果要打包为单个jar,请确保将库jar解压缩到插件中。