java - 无法从 Eclipse 插件项目 Bundle 中获取图像文件 URL
问题描述
我正在尝试从 Eclipse 插件项目中的捆绑包中获取图像。但它总是返回null。请在下面找到项目结构。我想获取“images/EmailTemplatesOutput/assets/icon_4.png”下的图像“icon_4.png”的URL。我尝试了不同的方法。但它返回null。
String path = "icon_4.png";
Bundle bundle = Platform.getBundle("BulkDemo");
URL url = FileLocator.find(bundle, new org.eclipse.core.runtime.Path(path), null);
ImageDescriptor imageDesc = ImageDescriptor.createFromURL(url);
Image image = imageDesc.createImage();
解决方案
不要将“images”目录放在“src”文件夹中,将其放在项目的顶层(如“bin”和“META-INF”)。确保更新“build.properties”以在构建中包含图像文件夹。
图像的路径是相对于插件根目录images/EmailTemplatesOutput/assests/icon_4.png
的(假设您移动了图像目录)。
返回的 URLFileLocator.find
仅使用 Eclipse 方案,因此只能由 Eclipse API 使用。您可以通过添加以下内容将 URL 转换为普通文件 URL:
URL fileURL = FileLocator.toFileURL(url);
这可能会导致 Eclipse 将您的插件解压缩到一个临时位置以访问这些文件。
推荐阅读
- c# - Mediatr:减少 DI 对象的数量
- android - 在手机上直接从 github 运行 python 代码
- android - 在 Android Studio 中使用 Sketch 的阴影?
- android - selectedItemCount 未正确检索所有列表位置
- jena - Apache Jena 是否驱逐 tdb 缓存?
- swift - Swift 4:一个对象可以从集合中删除自己吗
- jquery - Bootstrap datetimepicker 不起作用是什么问题?
- java - 如何在不为每个页面添加 addViewController 的情况下添加页面?
- vue.js - 当从动态组件子级发出事件时,Vue`vm.$on()`回调在父级中不起作用
- javascript - 将 HTML 字符串(包括样式)转换为 PDF(Electron - React - Typescript)