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 中,这也应该有效。
有旧的 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 中,这也应该有效。