【问题标题】:Eclipse does not show source code of maven dependencies in debug viewEclipse 在调试视图中不显示 maven 依赖项的源代码
【发布时间】:2016-06-07 22:20:35
【问题描述】:

我现在已经提交了一个错误:495662 - Source Lookup: Not seeing source code in the debug view


我的问题sounds familiar 但不可能,因为该问题似乎已解决。然而, 我在来自依赖项的类中设置了一个断点(通过 maven)。源代码已下载,但当程序到达该行时,我看到的只是

找不到来源。

我尝试通过单击“编辑源查找路径...”来添加查找路径,但没有任何改变。我不知道我必须添加什么才能让调试器找到源代码。

这似乎对我的依赖项所有停止工作。

我是如何破坏我的源查找以及如何修复它的?


可能很重要:

我从一个 maven 运行我的 tomcat 构建这些目标:

tomcat7:run-war -am -pl mz-web-server -Denv=dev

但到目前为止这还不是问题。


此外,我没有任何 maven 依赖项,例如gwt-user*.jar 或 `spring*.jar 或任何东西都列在源查找路径中。只有“Default”路径也不包含它 - 那些罐子不应该在那里列出吗?


下载 Eclipse Mars 2 后,完全删除我的项目并在没有任何 .settings.project.classpath 文件的情况下重新导入它,我仍然看到这个问题。我不知道这是否真的是一个 Eclipse 错误,但在这一点上我不知道它可能是什么。

我还尝试删除 C:\Users\<username>\.eclipse 并重新启动 IDE,但没有不同的结果。

这些是 Maven 依赖项下包含的库。如您所见,例如spring-security-core-*.jar 包含在内,并且源指向本地 maven 存储库。点击edit我看到完整路径C:/Users/Stefan/.m2/repository/org/springframework/security/spring-security-core/4.0.3.RELEASE/spring-security-core-4.0.3.RELEASE-sources.jar,是的,文件确实存在。

我的类路径变量

【问题讨论】:

  • 您是否在 Eclipse 上手动配置了任何其他库源?即使在这个项目之外?您可以将其设置为整个工作区的源的默认路径,这会导致此问题。
  • @JorgeCampos 嗯,不。每个依赖项都是使用 mavens <dependencies> 插件添加的。我实际上完全不知道我改变了什么——我已经在这个项目上工作了很长一段时间了。如果我编辑查找路径,它会闪烁片刻到一个文件,然后返回“找不到源”页面。
  • 是的,很可能您的工作区中有一个设置为没有所有源的路径。不久前,这种行为甚至被列为 eclipse 上的错误,因为屏幕上的事件将路径设置为 maven,然后将其恢复为配置。要修复它,请单击项目上的右键,然后运行 ​​Maven Build... 在目标类型中:干净安装,然后转到菜单项目清理所有项目。然后再试一次
  • 如果这不起作用,请转到您的项目文件夹,删除 .seetings、.classpath 和 .project 文件夹,返回 eclipse 刷新并运行 maven build install
  • 另一件事你应该知道,在一个 maven 项目中,所有不是 src 和 pom.xml 文件的东西都应该在 .gitignore 上(除非有项目的文件夹但代码没有使用,例如用于脚本等的数据库文件夹)

标签: eclipse maven


【解决方案1】:

我不知道实际的问题是什么以及它为什么停止工作。正如您可以从我的问题中解脱出来的那样,我实际上下载了一个干净的 Eclipse 版本,检查了裸项目并使用 maven 导入它而没​​有结果。

但是,我发现了这个com.ifedorenko.m2e.sourcelookup 插件。该链接在“Java Debugging: Source not found”中提供。

转到Help > Install New Software .. 并使用

http://ifedorenko.github.com/m2e-extras/

搜索链接。安装这个插件后,我终于可以调试依赖的源代码了。

【讨论】:

  • @JorgeCampos 我目前意识到这不能 100% 工作。我在变量视图中看到变量 - 这很好 - 但我无法将表达式添加到表达式视图并且我无法使用显示器 - 这意味着我无法调试静态内容,例如就像来自 Spring Security 框架的 SecurityContextHolder.getContext() 这实际上就是为什么 我需要它来工作
  • 如果我在显示视图中运行类似logger.debug("test") 的内容,我会得到“要执行评估,必须在 Java 项目的构建路径的上下文中编译表达式。当前执行上下文未与工作区中的 Java 项目关联。" .. yay ..
  • 那是你做不到的。选项是下载该库的源代码并将其添加到您的项目中,从您的依赖项中删除它。
  • @JorgeCampos 哦,这是正常行为吗?因为我得到了源代码和调试信息,所以我认为这就像我真的会自己编译一样。
  • 是的,这是正常行为。
【解决方案2】:

已针对 Eclipse Neon 测试:

按“编辑源查找...”,在对话框中按“Java 类路径变量”的添加按钮并选择 M2_REPO 变量并按“扩展...”。 然后从文件系统树中选择所需依赖的源jar文件。

然后在所有对话框上按“确定”并重新启动调试过程。

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 2015-09-10
    • 2012-08-16
    • 2016-05-16
    • 2017-07-18
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多