我一直在我的 Maven 项目中使用 Ebay SDK,但遇到了问题,现在我需要在我的项目中包含 Ebay SDK 源,以便我可以看到库内发生了什么。我已将源库作为 Maven 依赖项包含在内,但在调试时我仍然无法进入该库。
有人对我能做什么有什么想法吗?
J爱
在 Netbeans 的“项目”窗口中,您的项目/依赖项节点,右键单击您想要的库节点;您可以选择“下载源”。这样做。
您可以看到这些源并在调试期间进入。
我的 2 美分,以防你不知道确切的库,但有一个类名:
maven-dependency-plugin
)来下载源代码,但我认为这最终不是明智的解决方案,因为,首先,所有源代码都会被下载,而不仅仅是你想要的东西调试,其次,我不确定 Netbeans 是否会理解源代码已被下载 - 因此以下过程在所有情况下都是必要的。Navigate
-> Go to Type
(Ctrl + O
) 并选择要调试的类(除非你不知道该类 - 但至少你应该从某种堆栈中获得一些线索你以前见过的痕迹)Source
/History
选项卡下方看到一条功能区,上面会写着 No sources found. Showing generated code for ...
之类的内容 - 并且右侧会有一个按钮,上面应该写着 Attach Sources...
。单击该按钮将打开的对话框将包含添加现有文件夹或下载的选项。 Download
操作应将下载的源文件放在 xx-sources.jar
文件夹内实际 Maven jar 旁边的 .m2
文件中(至少在我的情况下发生过这种情况)。下载完成后,“附加源”对话框中将有一些内容可供选择,并且该类的完整代码将打开。您将能够在那里设置断点。Debugger Console
会显示类似以下内容:Not able to submit breakpoint LineBreakpoint SomeDebuggedClass.java : X, reason: The breakpoint is set outside of any class.
我发现通常在while调试时执行上述2和3步骤很有用,因此当我实际设置断点,如果可以设置断点,它会立即可见(如果出现问题,它将显示为损坏的图标)。在大多数情况下,错误在于您尝试调试的代码与找到的代码和下载的源代码并不完全对应。就我而言,很有可能依赖项中存在一些混淆,并且类加载器选择了库的另一个版本。Window
-> Debugging
-> Sources
- 通过上述过程,下载的源会自动添加到该窗口 - 因此无需进行实验。