2012-06-28 5 views
1

우리 제품에는 몇 가지 jdk 1.6.0._17 컴파일 된 Java 소스 파일이 있습니다. 그 중 하나에 예외가있을 때마다 줄 번호를 제공하지 않습니다..class 파일에는 LineNumberTable이 없습니다.

나는 javap을 사용하여 jdk 1.6.0._17 컴파일 된 클래스에 대해 자세히 알아 보았습니다. javap 출력에 LineNumberTable이 없으므로 예외 스택 추적에 행 번호가 표시되지 않습니다.

내 질문 : javac 명령은 디버그와 관련된 플래그 (예 : -g : lines, vars, source)를 사용하지 않습니다. 따라서 클래스 파일에는 기본적으로 소스 번호 & 줄 번호 정보가 있어야합니다. -g : none을 사용하여 디버그 정보의 생성을 비활성화하지 않습니다.

그래서 LineNumberTable이 .class 파일에서 생성되지 않는 다른 이유가있을 수 있습니다.

이 문제에 대한 도움을 주시면 감사하겠습니다.

감사합니다, VK

+0

이 다른 곳에서 컴파일 된 항아리에 대해 이야기하지 않았다? 자신의 .class 파일에서 디버그 정보가 컴파일되지 않았다면 설명 할 수 있습니다. Obfuscators는 .class 행 번호 테이블과 같은 디버깅 정보도 제거해야합니다. –

+0

BTW JDK 클래스에 대해 언급했듯이 JRE 클래스로 실행하고 있었을 가능성이 있습니까? –

답변

0

"은 javap 출력은 줄 번호는 예외 스택 트레이스에 표시되지 않는 이유는 이유는 어떤 LineNumberTable이 없습니다."

시도 :

javap -verbose -l -c JavaApplication2 
+1

답변이 아니라 댓글이어야합니다. – thepoosh