首页 > 解决方案 > 如何从 IProject 中获取 Bundle-SymbolicName?

问题描述

我正在为一个 Eclipse 项目编写一个向导,并希望Require-BundleManifest.MF.

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

标签: javaeclipseeclipse-plugin

解决方案


AnIProject可能不代表插件并且没有任何直接的 API 来获取插件 ID。

您可以使用普通的 JavaManifest类来查看 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 用于查找插件的代码。


推荐阅读