Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与URL一起使用getResource()时的兼容性问题_Java_Linux - Fatal编程技术网

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有一些复杂的排序,因为资源之间存在依赖关系。读取资源并对其排序的函数接受字符串输入。这样做的原因是允许在该函数中也将资源作为字符串添加。这不是我的选择,但我必须遵守。另外,我不希望为了实现而重写另一个库。