我已经创建了一个 eclipse 插件,我想在 eclipse 运行时进行部署。我有以下包结构。
com.myplugin
|
---resources
|
---server.bat
作为插件作业的一部分,应该执行“server.bat”文件。
我将插件打包为 .jar 文件,包括二进制文件中的 resouces 文件夹,并放入 eclipse“plugins”文件夹中。
插件生效并且工作正常,但我在执行“server.bat”文件时遇到问题,该文件位于我生成的 jar 中。错误消息说:
"Windows cannot find "resources\server.bat" make sure you typed name correctly and try again"
我尝试了相对路径和绝对路径,但没有用。
这是完成这项工作的代码:
URL url = Activator.getDefault().getBundle().getEntry("/resources/server.bat");
String fileURL = FileLocator.toFileURL(url).toString();
String commandLine = "cmd.exe /c start " +fileURL;
Process process= Runtime.getRuntime().exec(commandLine);
我得到了“fileURL”输出:
file:/D:/Program Files/IBM/SDP/configuration/org.eclipse.osgi/bundles/2392/1/.cp/resources/server.bat
我不确定这是正确的。
希望这足以回答问题。
或者,请建议一些其他方式,例如创建功能以部署具有文件夹结构的插件。我还没有尝试过这个选项。
最佳答案
我在导出插件时遇到了类似的问题。我不得不引用存储在我的插件 jar 文件中的 exe 文件。导出插件后,我无法访问压缩文件,而在开发插件时可以访问它,因为 eclipse 在我的“开发文件夹”中查找该文件。 为了解决这个问题,我创建了一个插件功能,并在 feature.xml 的“包含的插件”选项卡中选中了选项
Unpack the plug-in archive after the installation.
对于包含exe文件的插件。 使用此选项,您将在 eclipse 插件文件夹下的一个文件夹中找到您的插件文件,您将能够像访问常规文件一样访问它们。
例如
Bundle bundle = <get a bundle of your plugin>;
URL url = FileLocator.find(bundle, new Path(<relative path from plugin root to your file>), null);
try {
url = FileLocator.resolve(url);
} catch (IOException e) {
e.printStackTrace();
return false;
}
否则我认为你应该解压你的 jar。
希望这对您有所帮助。
编辑
正如我所说,您可以创建一个功能项目(例如 here ),当您添加插件时,选中“安装后解压插件存档”选项。 Eclipse 将为您完成这项工作,您会在 eclipse 插件文件夹中找到解压缩的插件。这为我解决了问题。
关于eclipse-plugin - 如何在 eclipse 插件中引用 jar 文件中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5622789/