尝试在java中读取txt文件时出现java.lang.NullPointerException

标签 java file

我不确定为什么会收到 npe,我可以读取 src/main/resources 旁边的目录中的其他文件。

它是一个从 eclipse 运行的基于 Maven 的项目。

有什么想法吗?

Java ..

StringBuilder sb = new StringBuilder();
try {

    InputStream is = ShaderControl.class.getResourceAsStream("fragmentShader.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

    String line;
    while ((line = br.readLine()) != null) {

        sb.append(line);
        sb.append('\n');
    }
    is.close();

} catch (Exception e) {
    e.printStackTrace();
}
System.out.println("Shader is " + sb.toString());

控制台输出..

java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:90)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:119)
    at justc0de.engine.tools.ShaderControl.loadShader(ShaderControl.java:36)
    at justc0de.engine.ui.GameRenderer.init(GameRenderer.java:157)
    at jogamp.opengl.GLDrawableHelper.init(GLDrawableHelper.java:640)
    at jogamp.opengl.GLDrawableHelper.init(GLDrawableHelper.java:662)
    at javax.media.opengl.awt.GLCanvas$9.run(GLCanvas.java:1366)
    at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1275)
    at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1131)
    at javax.media.opengl.awt.GLCanvas$11.run(GLCanvas.java:1394)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:314)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:750)
    at java.awt.EventQueue.access$300(EventQueue.java:115)
    at java.awt.EventQueue$3.run(EventQueue.java:711)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(AccessController.java:311)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:88)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:720)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:254)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:162)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:158)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:103)
Shader is 
Program link error: 

目录列表..

rob@work:~/git/justc0de$ ls src/main/resources/*.txt
src/main/resources/fragmentShader.txt  src/main/resources/vertexShader.txt

最佳答案

发现它应该是..

InputStream is = ShaderControl.class.getResourceAsStream("/fragmentShader.txt");

关于尝试在java中读取txt文件时出现java.lang.NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380162/

相关文章:

c++ - C++ “Using Uninitialized Memory.. (variable name) ”

file - 监控数千个文件移动、删除和重命名的最佳 Cocoa 方式?

java - 使用 ClassLoader 加载文件

Python-从文本文件或列表中获取特定字符

java - Websphere 和 QOS 日志返回 : log-files are locked for rolling

java - Eclipse自动构建Android项目很糟糕

Java .class 文件(简单)

java - JDK 7 java.nio.file isSymbolicLink() 行为

java - 我如何强制 install4j 在进行更新时不覆盖特定文件

JAVAFX:找不到文件的相对路径