2014-10-29 3 views
-2

이 질문을 Here에서보고 대답했습니다. 그러나 컴파일러는 여전히 Null Pointer Exception에 대해 불평하고 있습니다. 여기 내 코드 블록은 컴파일러가 불평 곳과 같습니다Null 포인터 예외를 Java에서 해결할 수 없습니다.

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(); 
    } 
} 

:

while ((str = reader.readLine()) != null) { 

그리고 여기 내 메인 클래스입니다 : 컴파일러는 특히이 라인에 대해 불평

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(); 
    } 
} 

이전 질문에 대한 링크에 설명 된 필수 수정 사항을 만들었지 만 컴파일러는 여전히 불만을 제기합니다.

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를 throw하므로 절대로 오류가 발생하지 않도록하십시오. 누구든지 NullPointer 예외를 수정하는 방법에 대한 아이디어가 있습니까?

+0

어떤 줄이 25 번째 줄인지 알려 주시면 도움이 될 것입니다. – Radiodef

+0

나는 그것을 이미 업데이트했습니다. 죄송합니다. – ryekayo

+0

오류를 잊지 않았습니까? 귀하의 예외는 여기에서 오는 것 같습니다. –

답변

5

귀하의 reader 변수는 문에서 readLine 호출 시간에 의해 null입니다 : 파일이 발견되지 않기 때문에, while ((str = reader.readLine()) != null) { (자신의 인쇄 문을 참조하십시오).

그러므로 nullBufferedReader 참조에서 readLine을 호출하여 NullPointerException을 던집니다.

여기서 가장 좋은 방법은 파일을 찾을 수없는 경우 readFile 메서드의 실행을 중지하는 것입니다.

reader 변수에서 인스턴스 메소드를 호출하기 전에 적어도 null을 확인하고 싶을 수 있습니다.

+0

공개로 변경했습니다. BufferedReader reader; 하지만 그것은 여전히 ​​같은 오류를 나타냅니다 .. – ryekayo

+0

그래. 또한 첫 번째 catch 문 다음에 실행이 계속된다고 언급합니다. 그는 아마 그것을 제거해야합니다. –

+0

@ryekayo : 파일이 없기 때문입니다. –

관련 문제