java - 如何从 IProject 获取 Bundle-SymbolicName?

标签 java eclipse eclipse-plugin

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

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

最佳答案

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 用于查找插件的代码。

关于java - 如何从 IProject 获取 Bundle-SymbolicName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55324229/

相关文章:

java - 在 OSGI Bundle 中查找文件和文件夹

java - 如何将 ServletListener 限制为单个上下文?

java - 签署 Eclipse 插件始终有效

java - 如何清除JTextPane中的所有样式?

java - <pluginManagement> 标签在 Maven2 上导致 "cannot find symbol"

java - 如何解决eclipse错误源未找到

android - "Refresh Property Sheet"遇到了

java - 制作带有可选 UI 界面的 headless Eclipse 应用程序

java - 每个 Java 域类都应该实现一个接口(interface)吗?

java - 是否有 Ant 任务来检查符号链接(symbolic link)是否悬空?