gpt4 book ai didi

java - 函数 getResourceAsStream 返回 null 而 getResource 返回一个 URL

转载 作者:搜寻专家 更新时间:2023-11-01 03:09:03 25 4
gpt4 key购买 nike

我遇到了很奇怪的问题,希望你能帮助我:我运行以下行:

InputStream stream = this.getClass().getClassLoader().getResourceAsStream(SOME_PATH);

而且它有效。然后,我创建一个指向同一个文件的新类加载器,然后

this.getClass().getClassLoader().getResourceAsStream(SOME_PATH)

返回空值。

当我调试它的时候,我看到了

this.getClass().getClassLoader().getResource(SOME_PATH)

返回一个有效的 URL 对象。

因此,我调试了 getResourceAsStream,发现它调用了 getResource,当它尝试打开 Steam 时 - 它因 FileNotFoundException 而失败。

我不知道怎么解决。流已正确关闭。

有人吗?

最佳答案

ClassLoader.getResourceAsStream()将尝试获取 URL资源和做resource.openStream() .

它吞下任何 IOException并返回 null反而。如果你得到 FileNotFoundException这意味着从一开始就没有找到资源。

要对此进行测试,请尝试:

URL resource = this.getClass().getClassLoader().getResource(SOME_PATH);
if (resource != null) {
try {
resource.openStream();
} catch (IOException e) {
e.printStackTrace();
}
}

如果你得到任何IOException然后是 ClassLoader.getResource()找不到资源或偶然无法打开流。

希望对您有所帮助。

关于java - 函数 getResourceAsStream 返回 null 而 getResource 返回一个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com