【问题标题】:Eclipse java debugging: source not foundEclipse java调试:找不到源
【发布时间】:2011-09-04 16:43:33
【问题描述】:

在 Eclipse 中调试 java 应用时,我在两种情况下收到“Source not found”错误:

  • 进入已导入的不同项目中的文件
  • 进入已安装的 maven 存储库中的文件

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

我尝试附加(它打开了一个对话框来定义一个变量?!)并且 Eclipse 确实跳转到了该文件,但调试器无法检查那里的任何变量。此外,手动附加每个依赖项的源代码也是不切实际的,因为在我的例子中,有数千个依赖项文件。

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

【问题讨论】:

  • 您是否有机会从其他地方复制了 .java 文件?如果你这样做了,不要。创建一个新的并将代码复制到其中。

标签: java eclipse debugging


【解决方案1】:

有时这些事情会因为版本而发生,就像您使用的是最新版本一样 在这种情况下可能会出现版本,请尝试使用旧版本。

【讨论】:

    【解决方案2】:

    上面提到的答案都不适合我。

    要解决这个问题,我必须遵循以下步骤:

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

    谢谢。

    【讨论】:

      【解决方案3】:

      附加源 -> 添加 -> 外部存档 -> 选择 jar -> 打开 -> 完成

      关键是寻找源 jar 并附上这个 jar。

      例如,jar 以“-sources”Stax2-api-3.4.1-sources 结尾

      【讨论】:

        【解决方案4】:

        我在 eclipse 2019-03 (4.11.0) 中遇到了同样的问题,我只能通过远程调试而不是直接在调试模式下启动它来解决这个问题。

        【讨论】:

          【解决方案5】:

          我的 eclipse maven 项目也有类似的问题。我与这个问题斗争了很长时间,然后我尝试用

          重建项目
          mvn clean eclipse:eclipse
          

          它有帮助。

          注意:使用这种方法会混淆 m2e 插件,因为这两种方法非常不同。 m2e 向您的项目添加一个名为“Maven Dependencies”的虚拟节点,并要求 Maven 在其中添加所有依赖项。

          另一方面,mvn eclipse:eclipse 将在文件.classpath 中创建许多单独的条目。 Eclipse 将处理它们,就像您手动将 JAR 添加到项目中一样。

          除非您知道 Eclipse 中的类路径是如何工作的,否则不建议使用这种方法。

          【讨论】:

          • 只有这对我也有效! mvn eclipse:eclipse 将项目依赖添加到 java 构建路径,所以它可以工作。另外,m2eclipse插件只会在Libraries选项卡的“Maven Dependencies”中添加项目依赖,调试器找不到。
          • 我不知道发生了什么,但执行此操作后,我在“Maven 依赖项”下看不到我的 Maven 依赖项了。
          【解决方案6】:

          Eclipse 调试与程序实际加载的类一起工作。

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

          这可能由于多种原因而发生,但请查看显示此行为的类所在的位置(查看导航窗格以识别它)。您很可能需要更改项目的构建路径以避免使用此 jar 并让 JVM 使用该项目。

          编辑:请注意,截至 2018 年,通常使用 Maven 之类的构建框架,其中构建路径由 m2e 插件管理,因此与提出问题时相比,此问题应该非常少。如果您使用 Maven 和 m2e,请确保启用 Preferences / Maven / "Download Artifact Sources" 或右键单击项目,Maven / "Download Sources"。

          【讨论】:

          • 大家好,但我发现这个答案更有用(堆栈溢出链接)[stackoverflow.com/questions/5815013/…
          • @shareef 该链接是关于缺少 javadoc,而不是缺少源代码。
          • @ACV 嗯,是的。也许它没有你想要的那么详细 - 你能告诉我你想更好地解释什么吗?
          • 答案是另一种说法:问题是“source not found”,我的建议是“try to find the source”
          • @dhein 考虑打开一个包含更多细节的新问题。
          【解决方案7】:

          点击 -> 编辑源查找路径

          之后

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

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

          【讨论】:

            【解决方案8】:

            在 eclipse photon 中尝试关闭 "Window->Preferences->Java->Debug->使用高级源码查找"

            编辑: 在这个版本的 eclipse 中有一个相关的错误,它会在调试 Java 应用程序时导致“找不到源”消息。有关详细信息,请参阅错误报告 bugs.eclipse.org/bugs/show_bug.cgi?id=537699

            【讨论】:

            • 好的,这个版本的 Eclipse 中存在一个相关的错误,它会在调试 Java 应用程序时导致“找不到源”消息。有关详细信息,请参阅错误报告 bugs.eclipse.org/bugs/show_bug.cgi?id=537699
            【解决方案9】:

            对于初学者来说,

            jar 文件可能是您尚未包含在 Eclipse 工作区中的项目的一部分。

            为此,您需要知道 jar 文件的项目名称。 比如说它的abc-18.0.0-SNAPSHOT.jar,这意味着你应该在你的工作空间中包含的项目是abc

            【讨论】:

              【解决方案10】:

              在“附加源”中,我在“源附件配置”面板中添加了另一个 maven 项目目录。从 m2 存储库添加最新版本的 jar 不起作用。其他 maven 项目中的所有类都无法打开。

              这里的测试是我的另一个包含所有 java 源代码的 maven 项目。

              【讨论】:

                【解决方案11】:

                嗯,这对我有用。我在 StackOverflow 上尝试了所有可能的解决方案。我尝试在调试菜单中更改我的源位置,我安装了 m2e Eclipse 插件,我从嵌入式 Maven 更改,我安装了 run-jetty-run,但没有任何效果。现在,我要提醒一下,我并没有试图查看外部人员的源代码,我只是想查看我的 OWN 代码,但每次我“介入”我在项目中编写的方法时,我都得到了“现在找到源”错误。

                在最后询问专家后,我的问题是 Eclipse 做的第一件事是调用 ClassLoader,您可以从调试堆栈中看到它。我所要做的就是按 F6(跨步),然后它把我带回原来的电话,然后按 F5(跨步)。还有我的代码。唉……这么简单的解决方法却浪费了一个小时。

                【讨论】:

                  【解决方案12】:

                  在我的情况下,即使在编辑源查找和添加项目之后,它也没有工作。我配置了项目的构建路径。

                  在那之后,我选择了 JRE 系统库并且它工作了。

                  【讨论】:

                    【解决方案13】:

                    只需 3 步即可配置 Eclipse IDE:

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

                    编辑源查找 选择 Edit Source Lookup... 命令 [ Edit Source Lookup ] 以打开 Source Path Dialog,它允许您更改所选调试目标的源查找路径。

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

                    【讨论】:

                    • 编辑源查找实际上对我有用。谢谢道格拉斯·弗拉里
                    • 像魅力一样工作。谢谢!
                    • 如果这不起作用怎么办......因为它对我不起作用
                    • 重要!!工作得很好,但只有在我停止正在运行的应用程序并重新启动它之后。在我这样做之前,它似乎仍然无法获得来源。
                    • 几个月来我一直在处理这个问题。这非常有效。
                    【解决方案14】:

                    进入 Eclipse 中的调试配置并使用以下目标来运行您的应用程序。

                    -Dmaven.surefire.debug

                    例如

                    -Dmaven.surefire.debug exec:java

                    【讨论】:

                      【解决方案15】:

                      我遇到了同样的问题,我按照以下步骤操作。

                      窗口 => 首选项 => Java => 已安装的JRE,

                      您在上面的屏幕中看到Jre1.8.0_12 被选中。

                      选择您正在使用的 JRE,然后单击 编辑。现在您应该会看到下面的屏幕。

                      点击目录,浏览 Jdk,它应该看起来像下面的屏幕。

                      点击确定,完成

                      【讨论】:

                      • 如果 Eclipse 无法从 Java 运行时加载类(任何全类型名称以 java. 开头的类,例如 java.lang.String),请使用此方法
                      【解决方案16】:

                      如果您正在尝试调试您的 maven java 项目,而 eclipse 无法找到您的源代码,请尝试其中之一。

                      1. 尝试在 pom.xml 中添加这些行
                      <build>**<sourceDirectory>src/main/java</sourceDirectory>**...
                      

                      尝试maven->更新然后调试

                      1. 进入项目根目录;

                      mvn eclipse:eclipse

                      现在尝试调试

                      【讨论】:

                        【解决方案17】:

                        这对我有用

                        右键单击项目 -> 属性 -> 部署程序集 -> 添加您的 jar

                        【讨论】:

                          【解决方案18】:

                          我在使用 java 代码处理包含数据集的 excel 文件时遇到了这个问题,然后将其转换为 .csv 文件,我尝试了这篇文章的答案,但没有奏效。 问题是jar文件本身。一个一个下载所需的 jar 文件(旧版本)并将它们添加到我的项目后,“找不到源”错误消失了。 也许你可以检查你的 jar 文件。 希望这会有所帮助。

                          【讨论】:

                            【解决方案19】:

                            如果您想通过自动下载将源代码附加到任何 JAR,请尝试使用此 Eclipse 插件Java Source Attacher

                            【讨论】:

                              【解决方案20】:

                              在调试模式下运行时,从线程挂起后单击编辑源查找。此时,我们应该能够添加包含您的源代码的必要项目/jar。 在我以这种方式添加我当前的项目之后,它解决了我的问题。谢谢

                              【讨论】:

                                【解决方案21】:

                                在我的情况下,另一个引用项目的 Maven 版本与测试项目的版本不匹配。一旦它们相同,问题就消失了。

                                【讨论】:

                                  【解决方案22】:

                                  就我的 tomcat 项目而言,我在这里检查了项目: 窗口 - 首选项 - Tomcat - 源路径 - 将 java 项目添加到源路径

                                  【讨论】:

                                    【解决方案23】:

                                    我遇到了一个与 Eclipse 中的 Glassfish 服务器调试相关的问题。 这是通过从不同的存储库(从 SVN 更改为 GitHub)加载源代码来实现的。在此过程中,Glassfish 服务器使用了错误的编译类,因此,源和运行时间将不同步,断点出现在空行上。

                                    要解决这个问题,重命名或删除类目录的顶层文件夹,Glassfish 将重新创建整个类目录树,包括使用正确编译的版本更新类文件。

                                    类目录位于:/workspace/glassfish3122eclipsedefaultdomain/eclipseApps//WEB-INF/classes

                                    【讨论】:

                                      【解决方案24】:

                                      在我的情况下,点击Remove All Breakpoints 解决了问题

                                      【讨论】:

                                        【解决方案25】:

                                        如果您使用 eclipse 或 STS,请安装并使用 GC(GrepCode Plugin),有时您不需要将源 .zip 文件附加到您的项目路径中,因此 GrepCode 适合您。

                                        【讨论】:

                                          【解决方案26】:

                                          信息:当您将 maven (pom.xml) 与几个项目一起使用时,这是一个可能的解决方案。

                                          如果您正在使用 maven,请确保您在相应的 pom.xml 中使用什么版本(例如 1.0.1-SNAPSHOT )。 您的代码可能是最新的,但您的 pom.xml 依赖项仍在使用旧的 JAR/快照(使用旧代码)。

                                          发现问题:

                                          • 尝试调试相应的文件。
                                          • 因此,在相关代码区设置断点。
                                          • 当出现“source not found”时,请确保在正确的项目中绑定(可以找到.java文件的地方)。
                                          • 编译 .class 文件在 IDE 编辑器中打开。
                                          • 单击“与编辑器链接”以找到相应的 JAR/快照。
                                          • 现在确保这个 JAR 是最新的。可能有一个更新的。在这种情况下,请在 pom.xml 中写入最新的版本号。
                                          • 然后在正确的项目目录中进行 maven 更新和构建(例如“mvn clean install -U”)。

                                          【讨论】:

                                            【解决方案27】:

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

                                            “在调试模式下运行时,右键单击正在运行的线程(在线程选项卡中)并选择编辑源代码查找。此时,您应该能够添加包含源代码的必要项目/jar。”

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

                                            【讨论】:

                                            • 我必须在“远程 Java 应用程序”或“Java HotSpot VM”下的“调试”视图中执行此操作。
                                            【解决方案28】:

                                            您可能拥有 Eclipse 可访问的依赖项的源代码。但是 Eclipse 不知道动态加载的代码的源代码。例如。通过 Maven。

                                            如果是 Maven,我建议你使用 run-jetty-run 插件:

                                            http://code.google.com/p/run-jetty-run/

                                            作为一种解决方法,您还可以使用调试器连接到正在运行的 JVM,您将看到代码。 或者,您可以从此处为 Eclipse 使用 Dynamic Source Lookup 插件:

                                            https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup

                                            不幸的是,它没有帮助我,因为它在带有空格的 Windows 路径方面存在问题。

                                            我已在 Eclipse Bugzilla 上填写了增强请求,如果您同意“找不到源”这个问题应该永远消失,请在这里投票:

                                            https://bugs.eclipse.org/bugs/show_bug.cgi?id=384065

                                            谢谢!

                                            莎莎

                                            【讨论】:

                                            • 你现在得到了我对这个错误的支持!
                                            【解决方案29】:

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

                                            【讨论】:

                                            • 我遵循了这个并且它起作用了。可能是因为我还在新的运行/调试配置的“源”选项卡上添加了所需的 java 项目文件夹。也许只需将缺少的源文件夹/项目添加到现有运行/调试配置的“源”选项卡就可以工作,而无需先将其删除。
                                            【解决方案30】:

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

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

                                            【讨论】:

                                              猜你喜欢
                                              • 2014-01-15
                                              • 2010-12-29
                                              • 2012-07-04
                                              • 1970-01-01
                                              • 2012-03-17
                                              • 2014-02-03
                                              • 1970-01-01
                                              相关资源
                                              最近更新 更多