如何使用同一项目中的文件夹而不将其添加到类路径?

时间:2016-12-23 04:34:22

标签: java eclipse eclipse-plugin eclipse-rcp

我有一个插件项目。

它的结构是这样的:

  • 项目名

    • SRC
      • MyCode.java
    • CSS
    • 图标
    • MyFolder文件

因此,我想将此 myFolder 用作 MyCode.java 文件中的资源。

如何在没有的情况下将文件夹 myFolder 添加到类路径中?

使用 getClass()。getResource(“myFolder”)需要 myFolder 在classpath中,对吗?

不能使用

new File(MyCode.class.getProtectionDomain().getCodeSource().getLocation().getFile()).getParent()

获取项目名称,因为上述行的输出将根据其使用的系统而改变,对吗?

1 个答案:

答案 0 :(得分:0)

对于Eclipse插件,您只需将该文件夹添加到插件的build.properties

然后使用FileLocator类访问该文件夹的内容:

Bundle bundle = .... your plugin's bundle

IPath path = new Path("myFolder/xxxxxx");

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

URL fileUrl = FileLocator.toFileURL(url);

来自FileLocator.find的网址使用特殊的Eclipse协议,但如果您只想调用openStream,则可以使用。

来自FileLocator.toFileURL的网址可用于将对象作为文件进行访问。调用此方法可能会导致Eclipse将插件jar解压缩到临时位置。