Eclipse 插件开发:使包在 `plugins` 文件夹中爆炸

Eclipse plugin dev: make bundle to explode inside `plugins` folder

有旧的 Eclipse 图像查看器插件 https://github.com/persal/quickimage 我想更新。

添加 maven/tycho build 并针对 Kepler 进行构建后。

它在新的 Eclipse 实例中工作(项目 -> 运行 作为 Eclipse 应用程序), 但是在此处安装时出现问题 #6

org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: file:\D:\Progs\Eclipses\eclipse-standard-luna-R-win32-x86_64\eclipse\plugins\nu.psnet.quickimage.plugin_1.1.0.201503030326.jar!\icons\previous.gif (The filename, directory name, or volume label syntax is incorrect.))

文件名、目录名或卷标语法不正确

查看代码有行

iconsdir = FileLocator.resolve(QuickImagePlugin.getDefault().getBundle().getEntry("/")).getFile() + "icons" + File.separator;

得到这样的路径。

问题是,如果 bungle jar 变成像 nu.psnet.quickimage_1.0.3.2

这样的文件夹,应该可以工作

更新:作为 IDE 使用 Luna 4.4.0

这由包含插件的 feature.xml 中的标志控制。

<plugin id="..." unpack="true"/>

如果您可以更改插件的来源,您可以更改

iconsdir = FileLocator.resolve(QuickImagePlugin.getDefault().getBundle().getEntry("/")).getFile() + "icons" + File.separator;

类似于:

URL dir = FileLocator.find(QuickImagePlugin.getDefault().getBundle(),
                           new Path("icons"), null);

dir = FileLocator.toFileURL(dir);

String iconsdir = dir.getPath() + File.separator;

即使将插件打包在 jar 中,这也应该有效。