如何找出Java中调用方法的位置?

时间:2016-01-21 07:42:10

标签: java debugging

我有超过100个类文件。当它返回值时,我在一个方法中收到错误消息。例如:

public String name()
{
    return("John");  // error message appeared here
}

我的问题是我无法找到这个被调用的地方。

2 个答案:

答案 0 :(得分:1)

您可以这样打印调用堆栈:

for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
    System.out.println(ste);
}

请注意,大多数IDE都有快捷方式来查找调用给定方法的位置。

例如在Eclipse中,您将选择您的方法,然后按Ctrl + Shift + G将显示该方法的所有可能的调用者。

您也可以使用调试器并逐步检查。

答案 1 :(得分:0)

你可以试试这个:

StackTraceElement[] ste = Thread.currentThread().getStackTrace()

来自Javadocs

  

返回与此ThreadInfo关联的线程的堆栈跟踪。   如果没有为此线程信息请求堆栈跟踪,则此方法将   返回一个零长度数组。如果返回的数组不为零   length然后数组的第一个元素代表顶部   stack,这是序列中最近的方法调用。该   数组的最后一个元素表示堆栈的底部,即   序列中最近的方法调用。