gpt4 book ai didi

java - getClassLoader().getResource(filepath) 返回空指针

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:52 25 4
gpt4 key购买 nike

我正在使用一种方法为研究项目动态生成 XML 文件,它们被放入从文件路径读取的加载程序中,我无法控制加载程序如何处理事情(否则我会传递内部 XML 表示而不是乱搞临时文件),我使用以下代码来保存文件:

File outputs = File.createTempFile("lvlFile", ".tmp.xml");

FileWriter fw = new FileWriter(outputs);

fw.write(el.asXML());

fw.close();

// filenames is my list of file paths which gets returned and passed around

filenames.add(outputs.getAbsolutePath());

现在,我确定有问题的文件是直接写入的。如果我打印 ports.getAbsolutePath() 并通过终端导航到那里检查文件,则所有内容都会正确生成并写入,因此文件系统上的所有内容都是正确的。但是,这段代码:

URL url = this.getClass().getClassLoader().getResource(_levelFile);

其中 _levelFile 是我上面生成的文件名之一,导致 url 为空。路径没有损坏或发生任何事情,打印验证 _levelFile 是否指向正确的路径。对于其他文件,相同的代码已成功。此外,该错误似乎与我是否使用 getPath()、getCanonicalPath() 或 getAbsolutePath() 无关,进一步设置outputs.isReadable(true) 不会执行任何操作。

有什么想法吗?请不要提供 Url url = 结构的替代方案,我对此代码没有任何控制权*,我有义务更改我的代码,以便正确设置 url。

(*) 至少不需要花费大量精力重写我正在使用的框架的大部分内容,即使当前代码在所有其他情况下都成功。

编辑:

同样,我无法使用 URL 代码的替代品,它是我无法触及的加载程序的一部分。另外,即使我将临时文件的路径设置为与成功加载的文件所在的目录相同,加载也会失败。

最佳答案

我假设类加载器只会在类路径中查找资源 - 可能不包括 /tmp。我不确定它是否真的支持绝对路径名。它可能只是将它们解释为相对于单个类路径的根。

使用 _levelFile.toURI().toURL() 怎么样?

关于java - getClassLoader().getResource(filepath) 返回空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8332371/

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