Java InputStreamReader类路径处的空指针
嗨,很遗憾,我不明白为什么我会收到空指针: 我的ResourceLoader类Java InputStreamReader类路径处的空指针,java,nullpointerexception,resources,classpath,inputstreamreader,Java,Nullpointerexception,Resources,Classpath,Inputstreamreader,嗨,很遗憾,我不明白为什么我会收到空指针: 我的ResourceLoader类 public static String loadResource(String path){ StringBuilder result = new StringBuilder(); try { InputStreamReader isr = new InputStreamReader(Class.class.getResourceAsStream(path)) ;
public static String loadResource(String path){
StringBuilder result = new StringBuilder();
try {
InputStreamReader isr = new InputStreamReader(Class.class.getResourceAsStream(path)) ;
BufferedReader reader = new BufferedReader(isr);
String line = "";
while((line = reader.readLine()) != null){
result.append(line).append("\n");
}
}catch (IOException e){
System.out.println("File nicht gefunden: " + e);
}
return result.toString();
}
这就是我使用它的地方
shaderProgram.createVertexShader(ResourceLoader.loadResource("shaders/mainVertex.glsl"));
shaderProgram.createFragmentShader(ResourceLoader.loadResource("shaders/mainFragment.glsl"));
这是我收到的豁免
java.lang.NullPointerException
at java.base/java.io.Reader.<init>(Reader.java:167)
at java.base/java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at utils.ResourceLoader.loadResource(ResourceLoader.java:13)
at graphics.Renderer.init(Renderer.java:32)
at GameEngine.init(GameEngine.java:43)
at GameEngine.run(GameEngine.java:33)
at Main.main(Main.java:9)
Process finished with exit code 0
java.lang.NullPointerException
位于java.base/java.io.Reader(Reader.java:167)
位于java.base/java.io.InputStreamReader。(InputStreamReader.java:72)
位于utils.ResourceLoader.loadResource(ResourceLoader.java:13)
位于graphics.Renderer.init(Renderer.java:32)
在GameEngine.init(GameEngine.java:43)
运行(GameEngine.java:33)
Main.Main(Main.java:9)
进程已完成,退出代码为0
谢谢你的关注 正如NomadMaker指出的,问题在于通话
newInputStreamReader(Class.Class.getResourceAsStream(path))
返回空值(您可能会将其视为错误消息的一部分)
这应该适合您:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Objects;
public class Main {
public static void main(String[] args) {
String filepath = "test.txt";
System.out.println(loadResource(filepath));
}
public static String loadResource(String path) {
InputStream is = Main.class.getClassLoader().getResourceAsStream(path);
StringBuilder result = new StringBuilder();
try (InputStreamReader isr = new InputStreamReader(Objects.requireNonNull(is));
BufferedReader reader = new BufferedReader(isr)) {
String line;
while ((line = reader.readLine()) != null) {
result.append(line).append("\n");
}
} catch (IOException | NullPointerException e) {
System.out.println("File nicht gefunden: " + e);
}
return result.toString();
}
}
需要牢记的问题:
this.class.getClass()getClassLoader().getResourceAsStream(路径)
从异常堆栈跟踪来看,Class.Class.getResourceAsStream(path)似乎返回null。这个问题似乎是