java - 在 Eclipse 插件中包含和访问二进制(非 Java)文件

标签 java eclipse eclipse-plugin

我想在我的 Eclipse 插件中包含一些与 Java 无关的二进制文件,这样我以后可以从插件的 Java 代码中访问它们。

1) 据我所知,我可以在构建配置的“构建/二进制构建”部分中添加一些文件和文件夹以包含在构建中:

enter image description here

不幸的是,在构建插件后,“folder-to-include”文件夹和下面的所有文件都没有复制到“bin”文件夹(或其他任何地方)。我误解了那个对话吗?我一直认为“bin”文件夹是构建项目/插件的“根”。在构建中包含二进制文件的正确方法是什么?

2) 如果我设法将我的文件包含在构建的插件中,我如何确定它们的路径以便我可以在插件的一个 Java 类中打开和使用它们?

最佳答案

您在构建中 checkin 的所有内容都应包含在顶层的插件 jar 中(bin 目录经过特殊处理)。

要查找插件中的对象,请使用:

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

哪里path是插件中的相对路径,bundle是插件Bundle .你可以获得 Bundle来自 BundleContext传递给插件激活器或使用 Platform.getBundle("plugin id")

由此返回的 URL 将使用 bundle方案,将其转换为 file网址使用:

URL fileURL = FileLocator.toFileURL(url);

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

更新:当您使用 Eclipse(使用运行/Eclipse 应用程序)运行您的插件时,不会构建任何 jar 并且文件夹不会复制到任何地方。你还在用FileLocator访问文件夹的 API 和路径是相同的。

关于java - 在 Eclipse 插件中包含和访问二进制(非 Java)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21816374/

相关文章:

java - 外部排序优化

java - 如何使 Eclipse 的 JDT 对象可序列化?

java - JBoss服务器启动问题

java - 没有注册类 'com.appspot.<projectname>.model.News'

java - 是否有空空闲列表数据结构?

java - 我如何防止用户重复输入(在该程序中使用 JOptionPane 和 if 语句)

java - 面向对象编程问题

google-app-engine - 在 mac os x 上运行的 Eclipse luna 上的 Google App Engine 插件

java - Tycho surefire 运行时 OSGi bundle 未激活

java - 如何从最近的启动下拉列表中删除无效的启动配置