Java 与URL一起使用getResource()时的兼容性问题
我需要使用Java 与URL一起使用getResource()时的兼容性问题,java,linux,Java,Linux,我需要使用getClass().getResource()从jar文件中获取资源。问题是我有一个URL作为输入,URL和getResource()之间似乎存在一些兼容性问题 所以我现在做的是, getClass().getResource(url.getPath()); 但是,这不起作用(getResourceAsStream()也不起作用),因为url.getPath()的输出如下所示 file:/mavenPath/repository/myJar.jar!/path/to/resourc
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和Linux。如果我手动修改路径,恐怕会导致Windows和Linux之间的兼容性
可能值得注意的是,我使用Linux,资源包含在类路径中,但与我遇到问题的方法不在同一个jar文件中
编辑
有人指出getResource()返回一个URL。问题是我有多个具有依赖关系的URL(实际上它们是MIB)。读取URL的函数位于另一个库中,并接受字符串输入。它还包括一些IANA和IETF标准MIB。我不明白:getResource()返回一个URL,如果已经有URL,为什么还要使用它?@MauricePerry Yes同意!URL有一些复杂的排序,因为资源之间存在依赖关系。读取资源并对其排序的函数接受字符串输入。这样做的原因是允许在该函数中也将资源作为字符串添加。这不是我的选择,但我必须遵守。另外,我不希望为了实现而重写另一个库。