如何从IProject获取Bundle-SymbolicName?

时间:2019-03-24 13:21:47

标签: java eclipse eclipse-plugin

我正在为一个Eclipse项目编写向导,并希望在Require-Bundle中包含另一个插件,例如Manifest.MF

我有要包含的IProject,是否可以在不解析Bundle-SymbolicName的情况下访问其Manifest.MF?还是有其他方法可以避免手动解析?

1 个答案:

答案 0 :(得分:1)

IProject可能不表示插件,并且没有任何直接API来获取插件ID。

您可以使用普通的Java Manifest类通过以下方式查看MANIFEST.MF:

IProject project = ...

IFile manifestResource = project.getFile(new Path("META-INF/MANIFEST.MF"));
if (manifestResource.exists()) {
    try (InputStream stream = manifestResource.getContents()) {
        Manifest manifest = new Manifest();
        manifest.read(stream);

        String symbolicName = manifest.getMainAttributes().getValue("Bundle-SymbolicName");
    } catch (CoreException | IOException ex) {
       ...
    }
}

此代码改编自Eclipse PDE用于查找插件的代码。