使用getResource()和URL的兼容性问题

时间:2017-05-12 05:13:54

标签: java linux

我需要使用getClass().getResource()从jar文件中获取资源。问题是我有一个URL作为输入,似乎URL和getResource()之间存在一些兼容性问题

所以我现在所做的是,

getClass().getResource(url.getPath());

但这不起作用(并且getResourceAsStream()也不起作用)因为url.getPath()的输出看起来像这样,

file:/mavenPath/repository/myJar.jar!/path/to/resource/myResource.ext

然而路径

/path/to/resource/myResource.ext

会奏效。我也注意到了

url.toURI()

有效但

url.toURI().getPath()

返回null(我不确定这是否相关)。所以问题似乎是第一条道路,

file:/mavenPath/repository/myJar.jar!

这会导致类加载器出现问题。

有没有人有解决方案?我怀疑我是第一个遇到这个问题的人,所以应该有一些我希望的解决方案。问题是这种表示法可能因Windows而异,如果我手动修改路径,恐怕会导致windows和linux之间的兼容性。

值得注意的是,我使用Linux并且资源包含在类路径中,但不在与我遇到问题的方法相同的jar文件中。

修改

有人指出getResource()返回一个URL。问题是我有多个带依赖关系的URL(实际上它们是MIB)。读取URL的函数位于另一个库中并采用String输入。它还包括一些IANA和IETF标准MIB。

0 个答案:

没有答案