我从第3方库中获得Class中的NullPointerException。现在,我想调试整个过程,我需要知道该类是从哪个对象持有的。但在我看来,我无法在第三方的类中设置断点。

有人知道我摆脱困境的方法吗?当然,我使用Eclipse作为我的IDE。

更新:该库是开源的。

最佳答案

最可靠的方法(最终得到有用的东西)是下载源代码(您说它是开源的),并设置另一个指向该源代码的“Java项目”。

为此,请下载源并将其解压缩到系统上的某个位置。单击"file"->“新建”->“Java项目”。在下一个对话框中,为其指定一个项目名称,然后选择“从现有源创建项目”。浏览到开源库的根目录。

假定该项目所需的所有其他库都已包含在您下载的项目中,那么Eclipse将解决所有问题并为您设置构建路径。

您需要从项目的构建路径中删除开源jar,然后将此新项目添加到项目的构建路径中。

现在,您可以将其视为您的代码,然后随意进行调试。

使用其他方法可以解决至少两个问题:

  • 您可以将源文件“附加”到jar文件,但是如果jar文件是在没有调试信息的情况下编译的,则此方法仍然无法使用。如果jar文件是使用调试信息编译的(lines,source,vars ...请参阅http://java.sun.com/j2se/1.3/docs/tooldocs/win32/javac.html-g选项)。
  • 您可以添加一个“异常断点”以查看何时引发NullPointerException,但这是一个常见的异常,并且很可能会在您要查找的异常之前被引发并处理许多(数百次)。另外,如果没有原始来源,您将无法真正看到抛出NullPointerException的代码的任何内容-您能够找出问题所在的可能性非常低。
  • 10-06 04:27
    查看更多