Eclipse java调试:找不到源代码

Jon*_*han 172 java eclipse debugging

在eclipse中调试java应用程序时,我在两种情况下收到" Source not found "错误:

  • 单步执行已导入的其他项目中的文件
  • 单步进入已安装的maven存储库中的文件

文件在那里,但是eclipse不会进入它们,而是显示一个" 附加源 " 按钮

我尝试附加(打开一个对话框来定义变量?!),eclipse确实跳转到文件,但调试器无法检查那里的任何变量.另外,为每个依赖项手动附加源代码也不实用,因为在我的情况下有数千个依赖项文件.

我是eclipse\java的新手,所以解释为什么会发生这种情况+如何解决这个问题会有很大帮助!

Dou*_*ari 278

配置Eclipse IDE只需3个步骤:

注意:更新源查找路径后,您必须停止并重新启动调试会话.否则,缺少源的文件将继续显示"缺少源".

编辑源查找选择编辑源查找...命令[编辑源查找]以打开源路径对话框,该对话框允许您更改所选调试目标的源查找路径.

在此输入图像描述

在此输入图像描述

在此输入图像描述

重要事项 在最后一步之后重新启动Eclipse.

  • 如果即使这样也行不通,会导致它不适合我 (11认同)
  • 重要!!工作得很好,但只有在我停止正在运行的应用程序并重新启动它之后.直到我这样做,似乎仍然无法得到消息来源. (11认同)
  • 编辑Source Lookup实际上对我有用.谢谢Douglas Frari (7认同)
  • 奇迹般有效.谢谢! (3认同)
  • 这对我不起作用,我正在使用 STS Bundle `3.9.1.RELEASE` `Eclipse Neon.3 (4.6.3)` 并且源代码很快显示然后它再次消失,给我留下了“源代码”未找到”和按钮“编辑源查找路径” (2认同)

Tho*_*sen 52

Eclipse调试与程序实际加载的类一起使用.

您描述的症状听起来像是在项目中找不到的类,但是在您正在使用的项目之前没有找到调试信息的分发jar中.

出现这种情况有几个原因,但要查看找到显示此行为的类的位置(在导航窗格中查找以识别它).您很可能需要更改项目的构建路径以避免使用此jar并让JVM使用该项目.

编辑:请注意,从2018年开始,通常使用像Maven这样的构建框架,其中构建路径由m2e插件管理,因此这个问题应该比问题时更频繁.

  • @shareef该链接是关于缺少javadoc,而不是缺少源代码. (11认同)

Dan*_*hev 45

当找到的类没有关联(或分配)源时,症状完美地描述了这种情况.

  • 您可以在Preferences> Java> Installed JRE中关联JDK类的源.如果JRE(不是JDK)被检测为要使用的默认JRE,那么您的JDK类将没有附加的源.请注意,并非所有JDK类都提供了源,其中一些仅以二进制形式分发.
  • 手动添加的项目构建路径中的类要求您手动附加关联的源.源可以驻留在zip或jar文件中,工作区中或文件系统中.Eclipse将扫描zip,例如,您的源不必位于存档文件的根目录中.
  • 来自其他插件(maven,PDE等)的依赖项的类.在这种情况下,由插件决定如何提供源.
    • PDE将要求每个插件都有相应的XXX.source包,其中包含插件的源代码.可在此处此处找到更多信息.
    • 如果可用,m2eclipse可以获取Maven依赖项的源和javadoc.应该启用m2eclipse首选项的此功能(该选项的名称类似于" Download source and javadocs ".
    • 对于其他插件,您需要查阅他们的文档
  • 从项目加载的类将自动与项目中的源匹配.

但是,如果Eclipse仍然建议您附加源代码,即使我正确设置了我的类及其来源,该怎么办:

这几乎总是意味着Eclipse从不同的地方找到了比你想象的更多的类.检查源查找路径以查看它可能在哪里获得错误的类.根据您的发现更新路径.

当遇到断点时,Eclipse根本找不到任何东西:

当您的源查找路径不包含当前在运行时加载的类时,会发生这种情况.即使该类位于工作空间中,它也可以对启动配置不可见,因为Eclipse严格遵循源查找路径并仅附加当前已调试的项目的依赖项.

PDE中的调试包是个例外.在这种情况下,因为运行时由多个项目组成,这些项目不必相互声明依赖项,所以Eclipse将自动在工作空间中找到该类,即使它在源查找路径中不可用.

我遇到断点时看不到变量,或者它只是打开源,但是没有选择断点行:

这意味着在运行时中,JVM或类本身没有必要的调试信息.每次编译类时,都可以附加调试信息.为了减少类的存储空间,有时会省略此信息,这使得调试此类代码变得很麻烦.您唯一的机会是尝试在启用调试的情况下重新编译.

Eclipse源查看器显示的行不同于实际执行的行:

它有时可以显示空白空间也被执行.这意味着您的源与类的运行时版本不匹配.即使您认为这是不可能的,也是如此,因此请确保设置正确的来源.或者您的运行时匹配您的最新更改,具体取决于您要执行的操作.


Ver*_*ing 10

来自http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source

"在调试模式下运行时,右键单击正在运行的线程(在线程选项卡中)并选择Edit Source Lookup.此时,您应该能够添加包含源代码的必要项目/ jar."

我以这种方式添加了我当前的项目,它解决了我的问题


krz*_*ste 9

我的eclipse maven项目遇到了类似的问题.我和这个问题打了很长时间,然后我试着重建projet

mvn clean eclipse:eclipse
Run Code Online (Sandbox Code Playgroud)

它有所帮助.


Var*_*run 7

我面临同样的问题,我按照以下步骤操作。

Window=> Preferences=> Java=> Installed JREs,

在此处输入图片说明

你在上面的画面中看到Jre1.8.0_12被选中了。

选择您正在使用的 JRE 并单击Edit。现在你应该看到波纹管屏幕。

在此处输入图片说明

单击目录,浏览 Jdk,它应该看起来像下面的屏幕。 在此处输入图片说明

单击确定,就完成了


Pir*_*ate 7

上述答案都不适合我。

要解决此问题,我必须按照以下步骤操作:

  • 右键单击 Java HotSpot(TM) 64 位服务器。
  • 选择“编辑源查找”。
  • 单击“添加”。
  • 选择“文件系统目录”而不是 Java 项目。
  • 选择项目的根目录。
  • 选中“搜索子文件夹”。
  • 单击确定,确定。

谢谢。


小智 6

删除现有的调试配置并创建一个新配置.那应该可以解决问题.


小智 5

我遇到的问题是我的 Eclipse 没有调试我的项目的源代码。我得到了一个带有“找到源代码节点”的空白页面。

请单击附加源代码按钮。然后删除“默认”文件夹,然后单击添加并转到您的项目位置并附加。这对我有用


小智 5

单击 -> 编辑源查找路径

然后

点击->添加最后选择Java项目并选择项目路径。

来源:https ://www.youtube.com/watch?v=IGIKPY6q1Qw