我需要使用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。