Java 显示 StackTrace 中一行的实际 Java 代码行

Java display the actual Java code line for a line in StackTrace

假设我得到以下 java 异常

ERROR - Error occured while reading properties. (MyPropertyReader.java) 
    java.lang.NullPointerException
        at com.x.MyPropertyReader.init(PropertyReader.java:**222**)
        at com.x.MyPropertyReader.<init>(PropertyReader.java:119)

您如何发现第 222 行的代码块到底是什么样子的?

例如:上面的异常是由于下面的代码行,我想在日志文件中看到类似下面的行。

propertyConfiguration.getProperty("REPORT_INFLUENCE_THRESHOLD"))).trim());

我想在日志文件中查看 REPORT_INFLUENCE_THRESHOLD 字符串。 但是,我一般很好奇如何在执行期间以编程方式在222中打印行。

显然,您首先需要将源文件放在您的类路径中。这个或至少在您知道可以找到它们的位置。

那你就用Throwable's .getStackTrace() which returns an array of StackTraceElements.

后者有源文件名和行(如果可用;jar 可能已编译也可能未包含调试信息);从此,阅读,查找行,打印!