내 클래스 파일을 분해하면,자바 LineNumberTable : 항목 설명
LineNumberTable:
line 204: 0
line 205: 9
line 208: 57
line 209: 63
line 210: 72
line 211: 75
line 212: 78
line 213: 87
line 216: 90
line 218: 118
line 221: 126
line 222: 131
line 223: 138
line 224: 143
line 227: 150
line 230: 157
line 231: 160
line 232: 170
line 235: 194
line 237: 228
line 240: 249
line 241: 259
line 243: 266
line 245: 269
line 246: 292
line 248: 295
line 249: 301
line 250: 308
line 251: 315
line 252: 322
line 253: 329
내가이 테이블 디버그 정보가 포함되어 있음을 알고있는 형태의 LineNumberTables 내가 얻을 첫 번째 항목은 클래스의 위치에 어떤 종류의 것을 -file이고, 두 번째 것은 소스 코드의 위치입니다. 나는 알고 싶다 :
소스 코드의 라인 번호는 상대적인가 절대인가? 만약 내가 그것들을 절대적으로 해석한다면, 어떤 것은 이상하게 보이는 여러 줄 주석의 중간을 지적한다.
동일한 소스 코드의 두 가지 다른 컴파일은 한 바이트 만 다릅니다. "216 : 90"항목이 "215 : 90"입력란으로 바뀝니다. 나는 이것이 무엇을 할 수 있는지 알아 내려고 노력한다. 어떤 생각?
[이 링크] (https://docs.oracle.com/javase/specs/jvms/se6/html/ClassFile.doc.html#22856) - 인터넷 검색에서 첫 번째 페이지의 일부인 "java line number table ". – TripeHound
고맙습니다 - 이미 그 페이지를 읽었습니다. –
죄송합니다 (그런 페이지를 읽었을 지 모르겠지만) 광산과 같은 주석을 멈출 수 있습니다 :-) 첫 번째 숫자는 바이트 코드에 대한 오프셋이고 두 번째 숫자는 "원본 소스 파일의 줄 번호입니다 ". 또한 (가능하면 여러 개의) 테이블에있는 항목이 소스 행과 일대일 관계 일 필요는 없다고 말합니다. 행 번호가 여러 줄로 된 주석의 중간에 있어야하는 것처럼 들리지는 않지만 말입니다. 추측을 어렵게하는 것은 _other_ 클래스가 다시 컴파일 되었기 때문에 나타나는 불일치를 나타낼 수 있습니까? (해당 페이지의 섹션 4.9의 두 번째 참조)? – TripeHound