2013-04-17 51 views
4

考虑以下异常打印JRE如何知道发生异常的代码行号?

java.util.NoSuchElementException 
    at java.util.StringTokenizer.nextToken(StringTokenizer.java:332) 
    at com.infoaxe.mr.homefeed.ReduceTwo.reduce(MapReduce.java:290) 

由于Java是编译型语言,什么运行在JVM是字节码,而不是源代码本身如何除外知道上线就发生了哪些?上例中的示例行332?

+0

字节码可能包含[调试符号](http://en.wikipedia.org/wiki/Debug_symbol) –

回答

15

只是因为编译器在生成的字节码中包含行号。如果需要,有-g​​(在Oracle javac编译器中)允许关闭它。

+0

你能提供一个关于它的信息吗? – iberbeu

+0

我更新了我的答案以提供此类链接。 –