在eclipse中调试java应用程序时,在两种情况下收到“ Source not found ”错误:
文件在那里,但是eclipse不会进入它们,而是显示“附加源”的按钮
我尝试附加(打开一个对话框来定义变量?!),eclipse确实跳转到文件,但调试器无法检查那里的任何变量。另外,为每个依赖项手动附加源代码是不切实际的,因为在我的情况下有数千个依赖项文件。
我是 eclipse \ java 的新手,所以解释为什么会发生这种情况+如何解决这个问题会有很多帮助!
答案 0 :(得分:260)
配置Eclipse IDE只需3个步骤:
注意:更新源查找路径后,您必须停止并重新启动调试会话。否则,包含缺失源的文件将继续显示“缺少源”。
编辑源查找 选择Edit Source Lookup ...命令[Edit Source Lookup]以打开Source Path对话框,它允许您更改所选调试目标的源查找路径。
最后一步之后
重要 重启Eclipse 。
答案 1 :(得分:48)
Eclipse调试适用于程序实际加载的类。
您描述的症状听起来像是在项目中找不到的类,但在没有调试信息的分发jar中找到了之前您正在使用的项目。
这可能由于多种原因而发生,但要查看找到显示此行为的类的位置(在导航窗格中查找以识别它)。您很可能需要更改项目的构建路径以避免使用此jar并让JVM使用该项目。
编辑:请注意,从2018年开始,通常使用像Maven这样的构建框架,其中构建路径由m2e插件管理,因此这个问题应该比问题时更频繁。如果您使用Maven和m2e,请确保启用Preferences / Maven /“Download Artifact Sources”或右键单击项目Maven /“Download Sources”。
答案 2 :(得分:45)
症状完美地描述了找到的类没有关联(或指定)来源的情况。
但是,如果Eclipse仍然建议您附加源代码,即使我正确设置了我的类及其来源,该怎么办:
这几乎总是意味着Eclipse从不同的地方找到了比你想象的更多的类。检查源查找路径以查看它可能在哪里获得错误的类。根据您的发现更新路径。
当遇到断点时,Eclipse根本找不到任何东西:
当您在源查找路径中不包含当前在运行时加载的类时,会发生这种情况。即使该类位于工作空间中,它也可以对启动配置不可见,因为Eclipse严格遵循源查找路径并仅附加当前已调试的项目的依赖项。
PDE 中的调试包是个例外。在这种情况下,因为运行时由多个项目组成,这些项目不必相互声明依赖项,所以Eclipse将自动在工作空间中找到该类,即使它在源查找路径中不可用。
我遇到断点时看不到变量,或者只是打开源,但没有选择断点行:
这意味着在运行时中,JVM或类本身没有必要的调试信息。每次编译类时,都可以附加调试信息。为了减少类的存储空间,有时会省略此信息,这使得调试此类代码变得很麻烦。您唯一的机会是尝试在启用调试的情况下重新编译。
Eclipse源查看器显示的行不同于实际执行的行:
有时可以显示空白空间也被执行。这意味着您的源与类的运行时版本不匹配。即使您认为这是不可能的,也是如此,因此请确保设置正确的来源。或者您的运行时匹配您的最新更改,具体取决于您要执行的操作。
答案 3 :(得分:10)
来自http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source
“在调试模式下运行时,右键单击正在运行的线程(在线程选项卡中)并选择Edit Source Lookup。此时,您应该能够添加包含源代码的必要项目/ jar。”< / p>
我以这种方式添加了我当前的项目,它解决了我的问题
答案 4 :(得分:9)
我的eclipse maven项目遇到了类似的问题。我和这个问题打了很长时间,然后我尝试用
重建项目mvn clean eclipse:eclipse
并且它有所帮助。
注意:使用这种方法会混淆m2e插件,因为这两种方法非常不同。 m2e为您的项目添加了一个虚拟节点,名为&#34; Maven Dependencies&#34;并要求Maven在那里添加所有依赖项。
另一方面, mvn eclipse:eclipse
将在文件.classpath
中创建大量单个条目。 Eclipse将处理它们,就好像您手动将JAR添加到项目中一样。
除非您知道Eclipse中的类路径如何工作,否则不建议使用此方法。
答案 5 :(得分:5)
删除现有的Debug Configuration并创建一个新配置。这应该可以解决问题。
答案 6 :(得分:4)
我遇到了同样的问题,我遵循了下面的步骤。
Window =&gt; 偏好设置 =&gt; Java =&gt; 已安装的JRE ,
您在上面的屏幕中看到Jre1.8.0_12
已被选中。
选择您正在使用的JRE,然后单击编辑。现在您应该看到波纹管屏幕。
点击确定,完成
答案 7 :(得分:3)
我遇到的问题是我的Eclipse没有调试我项目的源代码。我得到一个空白页面,其中包含“找到源代码节点”。
请单击“附加源代码”按钮。然后删除“默认”文件夹,然后单击“添加”并转到项目位置并附加。这对我有用
答案 8 :(得分:2)
显然,Eclipse不会自动知道从属jar的源代码在哪里。目前尚不清楚为什么调试器在连接源后无法检查变量。一种可能性是不正确/不兼容的来源。
假设您有一个maven项目并且依赖项的源代码已下载并在本地存储库中可用,您可能需要安装m2eclipse maven eclipse插件,看看这是否有助于解决您的问题。< / p>
答案 9 :(得分:1)
您可能拥有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上填写了一个增强请求,如果你同意这个问题&#34; Source not found&#34;应该永远消失,请在这里投票:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=384065
谢谢!
纱纱
答案 10 :(得分:1)
在我的情况下&#34;附加源&#34;,我在&#34;源附件配置&#34;中添加了另一个maven项目目录。面板。从m2存储库中添加最新版本的jar无效。来自另一个maven项目的所有类都无法打开。
这里test是我的另一个包含所有java源代码的maven项目。
答案 11 :(得分:1)
答案 12 :(得分:0)
没有一个答案对我有用。
要解决此问题,我必须遵循以下步骤:
谢谢。
答案 13 :(得分:0)
附加源->添加->外部存档->选择jar->打开->完成
要抓住的是寻找来源罐子并附加这个罐子。
例如,罐子以“ -sources” Stax2-api-3.4.1-sources
结尾答案 14 :(得分:0)
我在eclipse 2019-03(4.11.0)中遇到了同样的问题,我只能通过通过远程调试进行调试来解决此问题,而不是直接在调试模式下启动它。
答案 15 :(得分:0)
答案 16 :(得分:0)
对于初学者,
jar文件可能是您尚未包含在Eclipse工作区中的项目的一部分。
为此,您需要知道jar文件的项目名称。 假设它的 abc -18.0.0-SNAPSHOT.jar,这意味着您应该包含在工作空间中的项目是 abc 。
答案 17 :(得分:0)
嗯,这对我有用。我在StackOverflow上尝试了所有可能的解决方案。我尝试在调试菜单中更改我的源位置,我安装了m2e Eclipse插件,我从嵌入式Maven更改,并且我安装了run-jetty-run并且没有任何工作。现在,我要告诉我,我并不是想查看外部人员的源代码,我只是想看看我自己的OWN代码,但每次我进入&#34;对于我在MY项目中编写的方法,我得到了#34; Source现已发现&#34;错误。
在最后询问专家之后,我的问题是Eclipse正在做的第一件事是调用ClassLoader,你可以从调试堆栈中看到它。我所要做的只是F6(跳过),然后我回到原来的电话,然后是F5(步入)。还有我的代码。叹息......这么简单的修复,但浪费了一个小时。
答案 18 :(得分:0)
转到eclipse中的Debug配置,并使用以下目标来运行您的应用程序。
<强> -Dmaven.surefire.debug 强>
例如
-Dmaven.surefire.debug exec:java
答案 19 :(得分:0)
有时会发生这些事情是因为版本也如您使用的是最新版本 版本在这种情况下可能会出现尝试使用旧版本它会工作。
答案 20 :(得分:0)
这对我有用
右键点击项目 - &gt;属性 - &gt;部署组件 - &gt;添加你的罐子
答案 21 :(得分:0)
我在使用java代码处理包含数据集的excel文件时遇到此问题,然后将其转换为.csv文件,我尝试了这篇文章的答案,但它们没有用。 问题是jar文件本身。在逐个下载所需的jar文件(旧版本)并将它们添加到我的项目后,“源未找到”错误消失了。 也许你可以查看你的jar文件。 希望这会有所帮助。
答案 22 :(得分:0)
如果您想通过自动下载将源代码附加到任何JAR,请尝试使用此Eclipse插件Java Source Attacher
答案 23 :(得分:0)
在调试模式下运行时,从线程挂起后单击“编辑源查找”。此时,我们应该能够添加包含源代码的必要项目/ jar。 以这种方式添加我当前的项目后,它解决了我的问题。感谢
答案 24 :(得分:0)
在我的情况下,其他引用项目的Maven版本与测试项目的版本不匹配。一旦它们相同,问题就消失了。
答案 25 :(得分:0)
在我使用tomcat项目的情况下,我在这里检查了项目: 窗口 - 首选项 - Tomcat - 源路径 - 将java项目添加到源路径
答案 26 :(得分:0)
我在Eclipse中遇到与Glassfish服务器调试有关的相关问题。 这是通过从不同的存储库加载源代码(从SVN更改为GitHub)来实现的。在这个过程中,Glassfish服务器使用了错误的编译类,因此,源和运行时间与空行上出现的断点不同步。
要解决此问题,请重命名或删除classes目录的顶级文件夹,Glassfish将重新创建整个类目录树,包括使用正确编译的版本更新类文件。
classes目录位于:/ workspace / glassfish3122eclipsedefaultdomain / eclipseApps /&lt;您的Web应用程序&gt; / WEB-INF / classes
答案 27 :(得分:0)
如果您使用的是eclipse或STS,请安装并使用GC(GrepCode插件),有时您不需要将源.zip文件附加到项目路径中,因此GrepCode可以正常工作。
答案 28 :(得分:0)
信息:当你将maven(pom.xml)与几个项目一起使用时,这是一个可能的解决方案。
如果您正在使用maven,请确保您在相应的pom.xml中使用的是哪个版本(例如1.0.1-SNAPSHOT)。 您的代码可能是最新的,但您的pom.xml依赖项仍然使用旧的JAR / Snapshots(使用旧代码)。
发现问题:
答案 29 :(得分:0)
我遇到了同样的问题。就我而言,我已禁用Window-Preferences-Java-Debug [暂停未捕获异常的执行]。然后,控制台向我显示了正确的错误:我的MySql用户没有访问数据库的权限。 According to this topic.
答案 30 :(得分:-1)
如果您正在尝试调试maven java项目,并且eclipse无法找到您的源代码,请尝试其中之一。
<build>**<sourceDirectory>src/main/java</sourceDirectory>**...
尝试maven-&gt;更新然后调试
mvn eclipse:eclipse
现在尝试调试
答案 31 :(得分:-1)
在日食光子中尝试关闭 “窗口->首选项-> Java->调试->使用高级源代码查找”
编辑: 此版本的eclipse中有一个相关的错误,在调试Java应用程序时会导致“找不到源”消息。有关更多详细信息,请参见错误报告bugs.eclipse.org/bugs/show_bug.cgi?id=537699
答案 32 :(得分:-4)
在我的案例中,点击Remove All Breakpoints