Java 如何从IProject中获取捆绑包的SymbolicName?

Java 如何从IProject中获取捆绑包的SymbolicName?,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我正在为一个eclipse项目编写向导,希望在Manifest.MF中包含另一个插件as Require Bundle 我有我想要包含的IProject,我可以访问它的Bundle SymbolicName而不解析Manifest.MF吗?或者有其他方法可以避免手动解析吗?一个IProject可能不代表插件,也没有任何直接的API来获取插件id 您可以使用普通Java Manifest类查看Manifest.MF,方法如下: IProject project = ... IFile manif

我正在为一个eclipse项目编写向导,希望在Manifest.MF中包含另一个插件as Require Bundle

我有我想要包含的IProject,我可以访问它的Bundle SymbolicName而不解析Manifest.MF吗?或者有其他方法可以避免手动解析吗?

一个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) {
       ...
    }
}
此代码改编自EclipsePDE用于查找插件的代码