为什么有些stacktrace在java中没有行号

Jas*_*key 5 java exception stack-trace printstacktrace

我的客户有一个错误,当我查看日志时我们跟踪异常,一些堆栈跟踪没有行号:

at xxxx.xxx.xx.x.xx.DayIntervalRule.getInterval(DayIntervalRule.java)
at xxxx.xxx.xx.x.xx.XXSchedule.getNextDueDate(XXSchedule.java)
at xxxx.xxx.xx.x.xx.XXSchedule.evaluateRules(XXSchedule.java)
Run Code Online (Sandbox Code Playgroud)

请注意:我已将包名替换为类似"xx"的内容,并且我们的应用程序中定义了所有类和方法:

完整堆栈跟踪如下:

java.lang.NullPointerException
    at xxxx.xxx.xx.x.xx.DayIntervalRule.getInterval(DayIntervalRule.java)
    at xxxx.xxx.xx.x.xx.XXSchedule.getNextDueDate(XXSchedule.java)
    at xxxx.xxx.xx.x.xx.XXSchedule.evaluateRules(XXSchedule.java)
    at xxxx.xxx.xx.x.xx.EvaluateRulesVistor.visitXXNode(EvaluateRulesVistor.java:56)
    at xxxx.xxx.xx.x.xx.XXNode.accept(XXNode.java:396)
    at xxxx.xxx.xx.x.xx.AssetXX.traverseForest(AssetXX.java:351)
    at xxxx.xxx.xx.x.xx.AssetXX.run(AssetXX.java:70)
    at xxxx.xxx.xx.x.xx.XXEngine.doForecast(XXEngine.java:437)
    at xxxx.xxx.xx.x.xx.XXEngine.forecastWorkOrders2(XXEngine.java:380)
Run Code Online (Sandbox Code Playgroud)

我感兴趣的是为什么会发生这种情况?我的客户可能对现有代码(定制)做了些什么吗?

Mur*_*nik 5

没有显示行号的代码是在没有调试信息的情况下编译的.

  • 谢谢您的回答?你的意思是没有调试信息编译?我读了http://stackoverflow.com/questions/5746894/javac-with-debugging-information-option-gvars-output-example,接受的答案是-g生成所有调试信息,包括局部变量.默认情况下,仅生成行号和源文件信息.所以,似乎默认情况下应该包含行号不是吗? (2认同)