我已经查看了这个问题Here,并按照答案进行了操作。然而,编译器仍在抱怨Null Pointer Exception。以下是关于编译器抱怨的代码块:
public class readLogger {
DLQPush dlqPush = new DLQPush();
public String values[];
int condition = 2;
public BufferedReader reader = null;
public void readFile() {
try {
reader = new BufferedReader(new FileReader(
"/var/tmp/checkresults.log"));
} catch (FileNotFoundException e) {
System.err.println("ERROR: FILE NOT FOUND!\n");
}
String str = null;
try {
while ((str = reader.readLine()) != null) {
if (str.trim().length() == 0) {
continue;
}
values = str.split("\t");
System.out.println(values[1] + values[2]);
classifyStatus();
}
} catch (IOException e) {
e.printStackTrace();
}
}
编译器特别抱怨这一行:
while ((str = reader.readLine()) != null) {
这是我的主要课程:
import java.io.IOException;
//import org.dcm4che3.tool.storescu.*;
public class Main {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) {
readLogger rLog = new readLogger();
rLog.readFile();
}
}
我已经在前面问题的链接中描述了必要的修复,但我的编译器仍在抱怨它:
ERROR: FILE NOT FOUND!
Exception in thread "main" java.lang.NullPointerException
at readLogger.readFile(readLogger.java:25)
at Main.main(Main.java:13)
没关系错误,因为我已经将它导出到JAR文件并将其放在Linux中但它仍然在Linux中抛出NullPointer。有没有人对如何修复NullPointer异常有任何想法?
答案 0 :(得分:5)
当您在语句reader
中调用null
时,readLine
变量为while ((str = reader.readLine()) != null) {
,因为找不到该文件(请参阅您自己的print语句)。
因此,您通过在NullPointerException
readLine
引用上调用null
来抛出BufferedReader
。
此处的最佳做法是,如果找不到文件,请停止执行readFile
方法。
作为替代方案,您可能希望在调用null
变量上的实例方法之前至少检查reader
。