问题描述
|
在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解决了问题。