java - 如何从 IProject 中获取 Bundle-SymbolicName?
问题描述
我正在为一个 Eclipse 项目编写一个向导,并希望Require-Bundle
在Manifest.MF
.
我有IProject
我想要包含的,我可以在Bundle-SymbolicName
不解析的情况下访问它Manifest.MF
吗?还是有其他方法可以避免手动解析?
解决方案
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 用于查找插件的代码。
推荐阅读
- selenium - Selenium Webdriver - 如何找到几秒钟后消失的“内联警告消息”的css/xpath?
- android - com.google.firebase.auth.FirebaseAuthException:此应用无权使用 Firebase 身份验证。
- php - 管理员登录 PHP 时添加链接
- javascript - 根据另一个表单的数据添加新表单?
- datalog - 数据记录着色对象
- awk - 使用带有两个不同分隔符的 awk 来拆分和选择列
- c# - Unity C# REST PUT 请求正文在服务器端为空白
- javascript - 使用 JavaScript 更改 CSS 样式表中的规则
- vagrant - Vagrant 磁盘分区与 Debian 文件系统不匹配(分区较大)
- perl - 从模式到 TSV 的 Json