ClassLoader :: getSystemResource返回null

时间:2018-07-25 16:02:30

标签: kotlin

它过去曾经可以工作,但是我中间没有发生什么,现在它总是返回null

要读取的文件位于项目root diretory中,该项目与Paths.get(".")的输出相对应。

注意:函数是顶级

我正在读取imgui.ini文件here

fileLoadToLines(iniFilename)

defined

fun fileLoadToLines(filename: String) = ClassLoader.getSystemResourceAsStream(filename)?.use { it.bufferedReader().readLines() }

也尝试了其他Thread.currentThread().contextClassLoader,没有成功

出什么问题了?

1 个答案:

答案 0 :(得分:1)

项目根目录通常是默认的当前工作目录,但不一定位于类路径上。这就是为什么Paths.get(".")返回它,而类加载器找不到它下面的文件的原因,因为后者是通过类路径中的内容来进行的。

它曾经起作用,可能是因为您已将项目根目录添加到运行时类路径中。我建议的解决方案是不使用类加载器,而仅使用java.io中的文件系统API来加载它。