Eclipse Java调试:找不到源代码

问题描述

| 在Eclipse中调试Java应用程序时,在两种情况下会收到“找不到源”错误: 进入另一个已经导入的项目中的文件 进入已安装的Maven存储库中的文件 文件在那里,但是eclipse不会进入它们,而是显示一个“附加源”按钮。 我尝试附加(打开了一个对话框来定义变量?!),eclipse确实跳到了文件,但是调试器无法检查那里的任何变量。另外,为每个依赖项手动附加源也是不切实际的,因为在我的情况下,有成千上万的依赖文件。 我是eclipse \\ java的新手,所以解释为什么会发生+如何解决此问题将大有帮助!     

解决方法

        Eclipse调试适用于程序实际加载的类。 您描述的症状听起来像是在项目中找不到相关类,但在您正在使用的项目之前未找到调试信息的分发jar中。 发生这种情况的原因可能有多种,但请查看找到显示此行为的类的位置(在导航窗格中进行识别)。您很可能需要更改项目的构建路径,以避免使用此jar,而让JVM使用该项目。 编辑:请注意,自2018年起,通常使用Maven之类的构建框架,其中的构建路径由m2e插件管理,因此,此问题的发生频率应比问该问题时的发生频率低得多。如果您使用Maven和m2e,请确保启用“首选项” /“ Maven” /“下载Artifact Sources”或右键单击项目“ Maven /“ Download Sources””。     ,        只需3个步骤即可配置Eclipse IDE:   注意:更新Source Lookup路径后,您必须停止并重新启动调试会话。否则,缺少源文件的文件将继续显示“缺少源文件”。 编辑源查找 选择“编辑源查找...”命令[编辑源查找]以打开“源路径”对话框,该对话框可让您更改所选调试目标的源查找路径。 重要说明在此最后一步之后,请重新启动Eclipse。     ,这些症状完美地描述了所找到的类没有关联(或分配)源的情况。 您可以在“首选项”>“ Java”>“已安装的JRE”中关联JDK类的源。如果将JRE(不是JDK)检测为要使用的默认JRE,则您的JDK类将没有附加的源。请注意,并非所有JDK类都提供了源,其中一些仅以二进制形式分发。 手动添加的来自项目构建路径的类要求您手动附加关联的源。源可以驻留在工作区或文件系统中的zip或jar文件中。 Eclipse将扫描该zip文件,因此,例如,您的源不必位于存档文件的根目录中。 来自其他插件(Maven,PDE等)的依赖项中的类。在这种情况下,由插件决定如何提供源。 PDE将要求每个插件都具有相应的XXX.source捆绑包,其中包含插件的来源。可以在此处和此处找到更多信息。 如果有Maven依赖项,则m2eclipse可以获取源和javadocs。应该启用m2eclipse首选项(此选项的名称类似\“ Download source and javadocs \”)。 对于其他插件,您需要查阅其文档 从项目中加载的类将自动与项目中的源匹配。 但是,即使Eclipse仍然建议您附加源代码,即使我正确设置了类及其源代码,该怎么办: 这几乎总是意味着Eclipse正在从您期望的其他位置查找类。检查您的源代码查找路径,以查看在哪里可以得到错误的类。根据您的发现更新路径。 遇到断点时,Eclipse根本找不到任何东西: 当您在源代码中查找路径不包含当前在运行时中加载的类时,就会发生这种情况。即使该类在工作区中,启动配置也不可见,因为Eclipse严格遵循源查找路径,并且仅附加当前已调试的项目的依赖项。 PDE中的调试包是一个例外。在这种情况下,由于运行时由多个项目组成,而不必相互声明依赖关系,因此即使源查找路径中不存在该类,Eclipse也会自动在工作空间中找到该类。 遇到断点时,我看不到变量,或者它只是打开源,但没有选择断点行: 这意味着在运行时中,JVM或类本身都没有必要的调试信息。每次编译类时,都可以附加调试信息。为了减少类的存储空间,有时会省略此信息,这使得调试此类代码变得很麻烦。您唯一的机会是尝试在启用调试的情况下重新编译。 Eclipse源代码查看器显示的行与实际执行的行不同: 有时它可以表明还执行了空白空间。这意味着您的源与您的类的运行时版本不匹配。即使您认为这是不可能的,也要这样做,因此请确保设置正确的信号源。或者您的运行时匹配您的最新更改,具体取决于您要执行的操作。     ,        从http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source \“在调试模式下运行时,右键单击正在运行的线程(在”线程“选项卡中),然后选择”编辑源代码查找“。此时,您应该能够添加包含源代码的必要项目/ jar。” 我以这种方式添加了我当前的项目,它解决了我的问题     ,        我的Eclipse Maven项目也有类似的问题。我为此问题奋斗了很长时间,然后尝试用
mvn clean eclipse:eclipse
它有所帮助。 注意:由于两种方法非常不同,因此使用这种方法会使m2e插件感到困惑。 m2e将一个虚拟节点添加到您的项目中,名为““ Maven Dependencies \”,并要求Maven在此添加所有依赖项。 另一方面,1ѭ将在文件
.classpath
中创建很多单独的条目。 Eclipse将像手动将JAR添加到项目一样处理它们。 除非您知道Eclipse中的类路径如何工作,否则不建议使用此方法。     ,        删除现有的调试配置并创建一个新的。那应该解决问题。     ,我面临着同样的问题,我遵循了下面的步骤。 窗口=>首选项=> Java =>已安装的JRE, 您会在上面的屏幕中看到
Jre1.8.0_12
被选中。 选择您正在使用的JRE,然后单击“编辑”。现在,您应该看到波纹管屏幕。 单击目录,浏览到Jdk,它看起来应该像下面的屏幕。 单击确定,并完成     ,        我的问题是我的Eclipse无法调试项目的源代码。我得到一个带有“找到源代码节点”的空白页面。 请点击附加源代码按钮。然后删除\“ default \”文件夹,然后单击添加并转到您的项目位置并附加。这对我有用     ,        显然,Eclipse不会自动知道从属jar的源代码在哪里。目前尚不清楚为什么在附加源后调试器无法检查变量。一种可能是来源不正确/不兼容。 假设您有一个maven项目,并且依赖项的源已下载并在本地存储库中可用,则可能需要安装m2eclipse,maven eclipse插件,并查看它是否有助于解决您的问题。     ,        就我而言,即使在编辑源代码查找和添加项目之后,它也无法正常工作。我配置了项目的构建路径。 在那之后,我选择了JRE系统库,它开始工作了。     ,        您可能具有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 谢谢! 佐佐     ,        在“附加源”中,我在“源附件配置”面板中添加了另一个maven项目目录。从m2存储库添加最新版本的jar无效。另一个maven项目中的所有类均无法打开。 这里的测试是我另一个包含所有Java源代码的Maven项目。     ,        我有同样的问题。就我而言,我禁用了Window-Preferences-Java-Debug [在未捕获的异常上暂停执行]。然后,控制台向我显示了正确的错误:MySql用户没有访问数据库的特权。根据这个话题。     ,        信息:当您将maven(pom.xml)与几个项目一起使用时,这是一个可能的解决方案。 如果您使用的是maven,请确保在pom.xml中使用的版本(例如1.0.1-SNAPSHOT)。 您的代码可能是最新的,但是pom.xml依赖项仍在使用旧的JAR / Snapshots(带有旧的代码)。 查找问题: 尝试调试相应的文件。 因此,在相关代码区域中设置一个断点。 当出现“找不到源文件”时,请确保绑定到正确的项目(可以找到.java文件的位置)。 编译.class文件在IDE编辑器中打开。 单击\“与编辑器链接\”以找到相应的JAR /快照。 现在确保此JAR是最新的。可能有一个新的。在这种情况下,请在pom.xml中写入最新的版本号。 然后在正确的项目目录中进行Maven更新和构建(例如\“ mvn clean install -U \”)。     ,        如果您使用的是eclipse或STS,请安装并使用GC(GrepCode插件),有时不需要将源.zip文件附加到项目路径中,因此GrepCode可以很好地工作。     ,与Eclipse中的Glassfish服务器调试有关,我遇到了一个相关问题。 这是通过从其他存储库加载源代码(从SVN更改为GitHub)实现的。在此过程中,Glassfish服务器使用了错误的编译类,因此,源和运行时将与空行上出现的断点不同步。 要解决此问题,请重命名或删除classes目录的顶层文件夹,Glassfish将重新创建整个class目录树,包括使用正确编译的版本更新class文件。 classes目录位于:/ workspace / glassfish3122eclipsedefaultdomain / eclipseApps / <您的Web应用程序> / WEB-INF / classes     ,        就tomcat项目而言,我在这里检查了项目: 窗口-首选项-Tomcat-源路径-将Java项目添加到源路径     ,        在我的情况下,另一个引用项目的Maven版本与测试项目的版本不匹配。一旦它们相同,问题就消失了。     ,        在调试模式下运行时,从线程挂起后单击“编辑源查找”。此时,我们应该能够添加包含您的源代码的必要项目/ jar。 以这种方式添加当前项目后,它解决了我的问题。谢谢     ,        如果要通过自动下载将源代码附加到任何JAR,请尝试使用此Eclipse插件Java Source Attacher     ,        我在使用Java代码在包含数据集的excel文件上进行处理时遇到了这个问题,然后将其转换为.csv文件,我尝试了此帖子的答案,但它们没有用。 问题是jar文件本身。一步一步下载所需的jar文件并将其添加到我的项目中后,“找不到源文件”错误消失了。 也许您可以检查您的jar文件。 希望这会有所帮助。     ,        这对我有用 右键单击项目->属性->部署程序集->添加jar     ,        转到eclipse中的Debug配置,并使用以下目标运行您的应用程序。 -Dmaven.surefire.debug 例如 -Dmaven.surefire.debug exec:java     ,        好吧,这就是对我有用的东西。我在StackOverflow上尝试了所有可能的解决方案。我尝试在调试菜单中更改源位置,安装了m2e Eclipse插件,从嵌入式Maven进行了更改,并且安装了run-jetty-run,但没有任何效果。现在,我要告诫的是,我并不是想查看外部人员的源代码,我只是想查看自己的OWN代码,但是每次我“介入”我在MY中编写的方法时,项目,出现“现在找到源”错误。 在最后问了一个专家之后,我的问题是Eclipse要做的第一件事是调用ClassLoader,您可以从调试堆栈中看到它。我所要做的就是F6(跳过),然后又把我带回原来的通话,然后再按F5(进入)。还有我的代码。感叹……这么简单的解决方法,却浪费了一个小时。     ,        对于初学者, jar文件可能是您尚未包含在Eclipse工作区中的项目的一部分。 为此,您需要知道jar文件的项目名称。 例如,说它的abc-18.0.0-SNAPSHOT.jar,这意味着您应该包含在工作空间中的项目是abc。     ,        单击->编辑源查找路径 然后 单击->添加,最后选择Java项目,然后选择项目路径。 来源:https://www.youtube.com/watch?v = IGIKPY6q1Qw     ,        我在eclipse 2019-03(4.11.0)中遇到了相同的问题,我只能通过通过远程调试进行调试来解决此问题,而不是直接在调试模式下启动它。     ,        如果您要调试Maven Java项目,但是eclipse找不到源,请尝试以下方法之一。 尝试在pom.xml中添加这些行
<build>**<sourceDirectory>src/main/java</sourceDirectory>**...
尝试maven-> update,然后调试 转到项目的根目录;   mvn eclipse:eclipse 现在尝试调试     ,        在日食光子中尝试关闭 \“窗口->首选项-> Java->调试->使用高级源代码查找\” 编辑: 此版本的eclipse中有一个相关的错误,在调试Java应用程序时会导致显示“找不到源”消息。有关更多详细信息,请参见错误报告bugs.eclipse.org/bugs/show_bug.cgi?id=537699。     ,        就我而言,单击ѭ5解决了问题。