将嵌入式插件 jar 文件添加到项目中
Add embedded plugin jar file to a project
我需要通过修改类路径条目来使用我的插件将一些 jar 库添加到项目中。但我找不到办法做到这一点。我尝试将 jar lib 嵌套在我的插件的 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);
}
您可以从现有的库 jar 创建一个插件,并将其添加到您要使用库代码的插件的依赖项中。
为此,请使用 来自现有 JAR 存档向导的插件,它位于 文件 > 新建 > 项目... > 插件-在开发 > 来自现有 JAR 存档的插件中 。
这样您就可以将现有的 jar 包装在一个插件项目中。您也可以使用此插件作为您自己代码的基础。如果要打包为单个 jar,请确保将库 jar 解压缩到插件中。
我需要通过修改类路径条目来使用我的插件将一些 jar 库添加到项目中。但我找不到办法做到这一点。我尝试将 jar lib 嵌套在我的插件的 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);
}
您可以从现有的库 jar 创建一个插件,并将其添加到您要使用库代码的插件的依赖项中。
为此,请使用 来自现有 JAR 存档向导的插件,它位于 文件 > 新建 > 项目... > 插件-在开发 > 来自现有 JAR 存档的插件中 。
这样您就可以将现有的 jar 包装在一个插件项目中。您也可以使用此插件作为您自己代码的基础。如果要打包为单个 jar,请确保将库 jar 解压缩到插件中。