无法修复Java中的空指针异常

无法修复Java中的空指针异常,java,Java,我已经看了这个问题,并遵循了答案。但是编译器仍然在抱怨空指针异常。以下是我的代码块,说明编译器在哪里抱怨: public class readLogger { DLQPush dlqPush = new DLQPush(); public String values[]; int condition = 2; public BufferedReader reader = null; public void readFile() { try {

我已经看了这个问题,并遵循了答案。但是编译器仍然在抱怨空指针异常。以下是我的代码块,说明编译器在哪里抱怨:

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中抛出一个空指针。有人知道如何修复空指针异常吗?

在语句:
中调用
readLine
时((str=reader.readLine())!=null){
,因为找不到文件(请参阅您自己的打印语句),所以
reader
变量是
null

因此,通过调用
null
BufferedReader
引用上的
readLine
,可以抛出
NullPointerException

这里的最佳实践是,如果找不到文件,则停止执行
readFile
方法


或者,在调用
读取器
变量上的实例方法之前,您可能希望至少检查
null

如果您向我们指出哪一行是第25行,这将很有帮助。我已经更新了它,抱歉,没有发现错误?但您的异常似乎来自这里。str=reader.readLine()而(str!=null)而不是while((str=)!=null){,告诉我们区别你知道,这个网站的投票过程糟透了!我把它改成了,public BufferedReader reader;但它仍然声明了相同的错误..是的。还要提到执行在第一个catch语句之后继续。他可能应该删除它。@ryekayo:那是因为文件不在那里。