2015-01-21 4 views
2

내가자바는 excatly 코드 블록 라인 (222)에서의 모습 스택 추적에서 선

ERROR - Error occured while reading properties. (MyPropertyReader.java) 
    java.lang.NullPointerException 
     at com.x.MyPropertyReader.init(PropertyReader.java:**222**) 
     at com.x.MyPropertyReader.<init>(PropertyReader.java:119) 

는 어떻게 알 수 있습니까 다음과 같은 자바 예외를 얻고 가정에 대한 실제 자바 코드 라인을 표시?

예 : 위의 예외는 다음 코드 줄 때문에 발생하며 로그 파일에서 아래와 같은 내용을보고 싶습니다.

propertyConfiguration.getProperty("REPORT_INFLUENCE_THRESHOLD"))).trim()); 

로그 파일에 REPORT_INFLUENCE_THRESHOLD 문자열을보고 싶습니다. 그러나 일반적으로 어떤 방법으로 프로그래밍 방식으로 인쇄 줄 222에서 실행하는 동안 궁금하다.

+0

런타임에서는 클래스 파일이 바이트 코드로되어 있다고 생각하지 않으므로 222 번 라인이 실제로는 더 이상 존재하지 않습니다. – Angivare

답변

2

먼저 클래스 경로에 소스 파일을 포함하려면 이 필요합니다.이 위치 또는 적어도 자신이 발견 한 위치에서 찾을 수 있습니다.

그런 다음 Throwable's .getStackTrace()을 사용하면 StackTraceElements의 배열을 반환합니다.

후자는 소스 파일 이름과 라인 (IF AVAILABLE; jar가 디버그 정보로 컴파일되었거나 컴파일되지 않았을 수 있음)을가집니다. 그때부터, 읽기, 찾기 라인, 인쇄!

+0

JAR만으로는 충분하지 않습니다. 이해합니다. 소스 파일을 JAR에 패키지해야합니다. 매우 어려운 것 같습니다. 다른 조언? 심지어는 사용 된 매개 변수가있는 전체 줄이 없습니다.이 예에서 "REPORT_INFLUENCE_THRESHOLD"는 좋을 것입니다. –

+0

이 솔루션은 너무 성가신 동안 나는 자바 클래스 메모리에서 발자국을 이해하지 않으며 자동으로 다른 라인을 얻을 수있는 다른 방법은 없습니다. –