【问题标题】:Why some stacktrace do not have line number in java为什么有些堆栈跟踪在java中没有行号
【发布时间】:2014-09-30 05:41:29
【问题描述】:

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

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)

请注意: 我已将包名替换为“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)

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

【问题讨论】:

    标签: java exception stack-trace printstacktrace


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答?你是什​​么意思编译没有调试信息?我读了stackoverflow.com/questions/5746894/… 并且接受的答案说 -g 生成所有调试信息,包括局部变量。默认情况下,只生成行号和源文件信息。那么,似乎默认情况下应该包含行号不是吗?
    • @Jaskey 这取决于代码是如何编译的,更多详情请查看Option "-g" - Controlling Debugging Information
    • @Jaskey 如果你使用 Eclipse,你可以在 Project 的 Properties 设置的 Java Compiler 下进行配置。像添加行号属性到生成...
    猜你喜欢
    • 2014-10-22
    • 2018-12-03
    • 2013-02-05
    • 1970-01-01
    • 2012-07-11
    • 2011-01-14
    • 2017-01-30
    • 2011-11-11
    • 2014-02-05
    相关资源
    最近更新 更多