2014-02-16 22 views
3

我想在Eclipse插件中包含一些与二进制不相关的文件,所以我可以稍后在插件的Java代码中访问它们。在Eclipse插件中包含并访问二进制文件(非Java)

1) 据我了解,我可以构建配置的“建立/二进制构建”一节中添加一些文件和文件夹,包括在构建:

enter image description here

不幸的是,文件夹“包含文件夹”,并且下面的所有文件都不会在构建插件后被复制到“bin”文件夹(或任何其他地方)。我误解了这个对话吗?我一直认为“bin”文件夹是构建项目/插件的“根”。在构建中包含二进制文件的正确方法是什么? 2)如果我设法将我的文件包含在构建的插件中,我如何确定它们的路径,以便我可以在插件的某个Java类中打开并使用它们?

+0

你是如何构建插件的?你检查的所有东西都应该包含在jar的顶层。你也没有选择plugin.xml - 这是一个重要的文件。 –

+0

@ greg-449我使用内置的“构建项目”功能,将所有Java文件编译为.class文件,并将它们与一些插件元数据一起复制到bin文件夹(这是它的样子)。 – muffel

回答

3

您在构建中检查的所有内容都应该包含在顶层的插件jar中(专门处理bin目录)。

为了找到在一个插件使用的对象:

URL url = FileLocator.find(bundle, new Path(path), null); 

其中path是在插件的相对路径和bundle是插件Bundle。你可以从BundleContext传递给Bundle插件激活或使用Platform.getBundle("plugin id")

的URL从这个返回将使用bundle方案,将其转换为一个file URL使用:

URL fileURL = FileLocator.toFileURL(url); 

返回的文件URL可能位于临时位置。

更新:当您使用Eclipse运行插件(使用Run/Eclipse应用程序)时,则不会构建任何jar,并且文件夹不会被复制到任何位置。您仍然使用FileLocator API访问文件夹,路径相同。

+0

谢谢你的回答。不幸的是,如果我构建或运行/调试我的插件,根本不会构建任何jar。我是否必须将我的插件绑定到JAR中才能复制文件? Afaik我不必从我的插件构建一个jar来使用它 - 就像它在运行/调试时不会构建它一样。 – muffel

+0

更新了答案,详细说明了在Eclipse中进行测试期间的运行情况 –

相关问题