我已经为这个问题苦恼了相当长一段时间,但找不到解决方案:
我有一个使用自定义库打包成jar的Eclipse RCP应用程序。从插件中,我调用jar中的一个方法。
在这个方法中,我使用this.class.getResource(relPath)
获取资源,其中relPath
是我需要的文件的硬编码相对路径。这会返回一个可以用来构造File
的URL
。
现在,如果我不是从插件而是从简单的Java程序中调用此方法,它就完美地工作。
区别在于:Eclipse RCP的类加载器返回协议为bundleresource://
的URL
,而这种协议不受File
支持;而在运行简单的Java程序时,返回的是file://
URL,这完全可以用来构造File
。
我知道Eclipse SDK的FileLocator
类(将bundleresource-URL解析为file-URL),但我不能在库中使用它,因为我不想将其与Eclipse RCP平台绑定-也应该可以从非Eclipse RCP源使用此库。
有没有人有任何想法,如何以一种方式从相对路径加载此资源,使得无论从Eclipse RCP-插件还是任何其他客户端调用该方法都可以工作?
我需要在这个相对路径的目录上构造一个File
以搜索其中的文件。我完全陷入困境...
更新:如果有可能使用除File#list()之外的其他方法来获取目录内容,这已经可以帮助我了。
非常感谢任何提示,