通过使用依赖项使用File.separator读取资源而产生的问题

时间:2018-11-08 11:50:10

标签: kotlin resources shader

我正在尝试通过阅读特定的着色器来创建opengl程序,除了简单的文字外,其他什么都没有。

此文件直接位于src文件夹中。

如果我从主应用程序中读取了着色器,则斜杠,反斜杠,File.separatorFile.separatorChar都没有问题:

  • "ec/core/render/shaders/gl3/texture.vert"
  • "ec/core/render/shaders/gl3\\texture.vert"为逃脱加倍
  • "ec/core/render/shaders/gl3" + File.separator + "texture.vert"
  • "ec/core/render/shaders/gl3" + File.separatorChar + "texture.vert"

但是如果我尝试从dependency util加载着色器:

        val fullShader = when {
            root.endsWith('/') || root.endsWith('\\') -> "$root$shader"
            else -> root + '/' + shader // here
        }

然后只有斜线有效。一旦调用createShaderFromPath并且代码流到达this,所有其他选项都会触发NPE:

        val lines = ClassLoader.getSystemResourceAsStream(path).use {
            println(path)
            InputStreamReader(it).readLines()  // NPE
        }

为什么?

0 个答案:

没有答案