Eclipse java debugging: source not found
Asked Answered
S

35

202

While debugging a java app in eclipse I receive a "Source not found" error in two cases:

  • Stepping in to a file in a different project which is already imported
  • Stepping in to a file in an installed maven repository

The files are there, but eclipse won't step into them, instead it shows a button to "attach source"

I tried attaching (which opened a dialog to define a variable?!) and eclipse did jump to the file, but the debugger could not inspect any variables there. Also manually attaching the source for each dependency isn't practical, as in my case there are thousands of dependency files.

Why is this happening, and how can it be resolved?

Synoptic answered 30/5, 2011 at 9:36 Comment(1)
Did you by any chance copied the .java file from somewhere else? if you did, don't. create a new one and copy the code into it.Leek
S
64

Eclipse debugging works with the class actually loaded by the program.

The symptoms you describe sounds like the class in question was not found in the project, but in a distribution jar without debug info found before the project you are working with.

This can happen for several reasons but have a look at the location where the classes showing this behaviour is found (look in the navigation pane to identify it). You will most likely need to change the build path of the project to avoid using this jar and have the JVM use the project instead.

EDIT: Note that as of 2018 it is common to use a build framework like Maven, where the build path is managed by the m2e plugin so this problem should be very less frequent than when the question was asked. If you use Maven and m2e, make sure to enable Preferences / Maven / "Download Artifact Sources" or right-click the project, Maven / "Download Sources".

Sesterce answered 30/5, 2011 at 18:8 Comment(6)
hi thanks for all but i found this answer more usefull (stack over flow link)[#5815513Emarie
@Emarie that link is about missing javadoc, not missing source.Hughmanick
@ACV Well, yes. Perhaps it is not as elaborate as you would like - could you let me know what you would like to have explained better?Hughmanick
the answer is another way of saying: the problem is "source not found", and my suggestion is "try to find the source"Ryannryazan
@shanyangqu no, because the problem is that the class found by the debugger is not the class produced from the java source in Eclipse. The typical reason I*ve seen for this is that the classpath for some reason contains a jar file with an OLD version of this class in it, where attaching the most current source will not be correct. This will also mean that even if you change the source code the byte code will not update correctly, giving even more subtle bugs.Hughmanick
@ThorbjørnRavnAndersen Could I'm having the same problem here? What can I do to check if what you say is the problem?Pigheaded
T
337

Just 3 steps to configuration Eclipse IDE:

Note: After updating the Source Lookup paths, you'll have to stop and restart your debug session. Otherwise, the file with the missing source will continue to show "missing source".

Edit Source Lookup Select the Edit Source Lookup... command [ Edit Source Lookup ] to open the Source Path Dialog, which allows you to make changes to the source lookup path of the selected debug target.

enter image description here

enter image description here

enter image description here

IMPORTANT Restart Eclipse after this last step.

Theomachy answered 8/4, 2014 at 10:42 Comment(6)
Important!! Worked well, but only AFTER I stopped the running application and restarted it. Until I did that it seemed as though it still couldn't get the sources.Barrault
in my case, copy or clone projects in eclipse caused this problemRyannryazan
This doesn't work for me, I'm using the STS Bundle 3.9.1.RELEASE Eclipse Neon.3 (4.6.3) and the source is quickly showing then it dissapears again, leaving me with the "Source not found" and the button "Edit Source Lookup Path"Manna
This did not work when I added my maven m2 folder in the list. The maven repository had the source jars.Oarsman
Works for me. Environment: Maven, J2EE, TomcatDouglasdouglashome
worked for me . i added all my projects in workspace then source came up immediately. no need to restart the eclipse.Malcolmmalcom
S
64

Eclipse debugging works with the class actually loaded by the program.

The symptoms you describe sounds like the class in question was not found in the project, but in a distribution jar without debug info found before the project you are working with.

This can happen for several reasons but have a look at the location where the classes showing this behaviour is found (look in the navigation pane to identify it). You will most likely need to change the build path of the project to avoid using this jar and have the JVM use the project instead.

EDIT: Note that as of 2018 it is common to use a build framework like Maven, where the build path is managed by the m2e plugin so this problem should be very less frequent than when the question was asked. If you use Maven and m2e, make sure to enable Preferences / Maven / "Download Artifact Sources" or right-click the project, Maven / "Download Sources".

Sesterce answered 30/5, 2011 at 18:8 Comment(6)
hi thanks for all but i found this answer more usefull (stack over flow link)[#5815513Emarie
@Emarie that link is about missing javadoc, not missing source.Hughmanick
@ACV Well, yes. Perhaps it is not as elaborate as you would like - could you let me know what you would like to have explained better?Hughmanick
the answer is another way of saying: the problem is "source not found", and my suggestion is "try to find the source"Ryannryazan
@shanyangqu no, because the problem is that the class found by the debugger is not the class produced from the java source in Eclipse. The typical reason I*ve seen for this is that the classpath for some reason contains a jar file with an OLD version of this class in it, where attaching the most current source will not be correct. This will also mean that even if you change the source code the byte code will not update correctly, giving even more subtle bugs.Hughmanick
@ThorbjørnRavnAndersen Could I'm having the same problem here? What can I do to check if what you say is the problem?Pigheaded
D
48

The symptoms perfectly describes the case when the found class doesn't have associated (or assigned) source.

  • You can associate the sources for JDK classes in Preferences > Java > Installed JRE. If JRE (not JDK) is detected as default JRE to be used, then your JDK classes won't have attached sources. Note that, not all of the JDK classes have provided sources, some of them are distributed in binary form only.
  • Classes from project's build path, added manually requires that you manually attach the associated source. The source can reside in a zip or jar file, in the workspace or in the filesystem. Eclipse will scan the zip, so your sources doesn't have to be in the root of the archive file, for example.
  • Classes, from dependencies coming from another plugins (maven, PDE, etc.). In this case, it is up to the plugin how the source will be provided.
    • PDE will require that each plugin have corresponding XXX.source bundle, which contains the source of the plugin. More information can be found here and here.
    • m2eclipse can fetch sources and javadocs for Maven dependencies if they are available. This feature should be enabled m2eclipse preferences (the option was named something like "Download source and javadocs".
    • For other plugins, you'll need to consult their documentation
  • Classes, which are loaded from your project are automatically matched with the sources from the project.

But what if Eclipse still suggest that you attach source, even if I correctly set my classes and their sources:

This almost always means that Eclipse is finding the class from different place than you expect. Inspect your source lookup path to see where it might get the wrong class. Update the path accordingly to your findings.

Eclipse doesn't find anything at all, when breakpoint is hit:

This happens, when you are source lookup path doesn't contain the class, which is currently loaded in the runtime. Even if the class is in the workspace, it can be invisible to the launch configuration, because Eclipse follows the source lookup path strictly and attaches only the dependencies of the project, which is currently debugged.

An exception is the debugging bundles in PDE. In this case, because the runtime is composed from multiple projects, which doesn't have to declare dependencies on one another, Eclipse will automatically find the class in the workspace, even if it is not available in the source lookup path.

I cannot see the variables when I hit a breakpoint or it just opens the source, but doesn't select the breakpoint line:

This means that in the runtime, either the JVM or the classes themselves doesn't have the necessary debug information. Each time classes are compiled, debug information can be attached. To reduce the storage space of the classes, sometimes this information is omitted, which makes debugging such code a pain. Your only chance is to try and recompile with debug enabled.

Eclipse source viewer shows different lines than those that are actually executed:

It sometimes can show that empty space is executed as well. This means that your sources doesn't match your runtime version of the classes. Even if you think that this is not possible, it is, so make sure you setup the correct sources. Or your runtime match your latest changes, depending on what are you trying to do.

Diatomaceous answered 30/5, 2011 at 9:36 Comment(3)
Excellent answer! A tidbit missing from this answer is specific to OSGi bundles: Eclipse can find source if a bundle contains OSGI-OPT/src and the bundle is on a Eclipse project's build path. See this other stackoverflow item for details: #9720983Weaponeer
Maybe you can take a look at this - I'm out of things to try already..Pigheaded
Good to know. Lot of theory, but no practical solution.Oarsman
U
11

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

"When running in debug mode, right click on the running thread (in threads tab) and select Edit Source Lookup. At this point, you should be able to add the necessary project/jar which contains your source code."

I added my current project in this way, and it solved my problem

Unbated answered 10/1, 2013 at 11:23 Comment(1)
I had to do this in the Debug view, there under "Remote Java Application" or "Java HotSpot VM".Mckinney
G
10

I had similar problem with my eclipse maven project. I fought with this issue quite a long time then I tried to rebuild project with

mvn clean eclipse:eclipse

and it helped.

Note: Using this approach will confuse the m2e plugin since the two approaches are very different. m2e adds a virtual node to your project called "Maven Dependencies" and asks Maven to add all dependencies there.

mvn eclipse:eclipse, on the other hand, will create a lot of individual entries in the file .classpath. Eclipse will handle them as if you manually added JARs to your project.

Unless you know how the classpath in Eclipse works, this approach is not recommended.

Goring answered 25/4, 2014 at 9:20 Comment(2)
Only this works for me too! mvn eclipse:eclipse add project dependency to java build path, so it works. Besides, the m2eclipse plugin will add the project dependency only in "Maven Dependencies" which in Libraries tab, and the debugger cannot find.Mckeon
I don't know what happened but after executing this I don't see my maven dependencies under "Maven Dependencies" anymore.Pigheaded
I
8

I was facing the same issue,I followed the bellow steps.

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

enter image description here

You see in the above screen Jre1.8.0_12 is selected.

select the JRE you are using and click Edit. Now You should see the bellow screen.

enter image description here

Click on the directory, browse for Jdk, It should look like bellow screen. enter image description here

click ok, and its done

Iamb answered 30/3, 2017 at 11:46 Comment(1)
Use this approach if Eclipse can't load classes from the Java runtime (any class where the full type name starts with java. like java.lang.String)Ambrosius
H
7

None of the mentioned answer worked for me.

To resolve this issue i have to follow bellow steps:

  • Right click on Java HotSpot(TM) 64 Bit server.
  • Select "Edit Source Lookup".
  • Click on "Add".
  • Select "File System Directory" instead of Java project.
  • Select Root directory of your project.
  • Check "Search Subfolders".
  • Click Ok ok ok.

Thanks.

Hitormiss answered 30/11, 2020 at 14:22 Comment(1)
Finally an answer that worked for me. I just had to do an Eclipse restart at the end.Cockrell
T
6

I had the problem that my Eclipse was not debugging the source code of my project. I was getting a blank page with "Source code node found".

Please click the Attach source code button. Then delete the "default" folder then click add and go to your project location and attach. This worked for me

Tingle answered 11/10, 2012 at 4:15 Comment(0)
S
6

Remove the existing Debug Configuration and create a new one. That should resolve the problem.

Submultiple answered 1/11, 2012 at 18:7 Comment(1)
I followed this and it worked. Possibly because I also added the desired java project folder on the new run/debug configuration's 'Source' tab. Maybe just adding the missing source folder/project to the 'Source' tab of the existing run/debug config can work without having to delete it first.Invective
E
5

Click -> Edit Source Lookup Path

after then

Click -> Add finally select Java project and select project path.

Edd answered 27/11, 2018 at 12:6 Comment(0)
C
3

In my case, even after Editing source lookup and Adding project, it didn't worked. I configured the Build path of the project.

enter image description here

After that, I selected JRE System Library and it worked.

enter image description here

Complexity answered 21/1, 2018 at 7:47 Comment(0)
I
2

Evidently, Eclipse does not automatically know where the source code for the dependent jars are. It is not clear why debugger could not inspect variables once the source was attached. One possibility is incorrect/incompatible source.

Assuming you have a maven project and the sources of the dependencies are downloaded and available in the local repository, you may want to install m2eclipse, the maven eclipse plugin and see if that helps in addressing your issue.

Interline answered 30/5, 2011 at 9:47 Comment(0)
U
1

You might have source code of a dependency accessible to Eclipse. But Eclipse does not know for source code for code that is dynamically loaded. E.g. through Maven.

In case of Maven, I recommend that you use run-jetty-run plugin:

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

As a workaround you can also connect to a running JVM with the debugger and you will see the code. Alternatively you can use Dynamic Source Lookup plugin for Eclipse from here:

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

Unfortunately it didn't helped me as it has issues with Windows paths with spaces.

I have filled an enhancement request on Eclipse Bugzilla and if you agree this issue "Source not found" should vanish forever, please vote for it here:

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

Thanks!

Sasa

Urethrectomy answered 12/7, 2012 at 12:56 Comment(1)
You now have my support on this bug!Mckinney
N
1

In my case in "Attach Source", I added the other maven project directory in the "Source Attachment Configuration" panel. Adding the latest version jar from the m2 repository din't work. All the classes from the other maven project failed to open.

enter image description here

Here test was my other maven project containing all the java sources.

Nuncle answered 7/6, 2018 at 6:5 Comment(0)
S
0

I had the very same problem. In my case, I've disabled Window-Preferences-Java-Debug [Suspend execution on uncaught exceptions]. Then, the console showed me the correct error: my MySql user hadn't privileges to access the database. According to this topic.

Spectrograph answered 2/2, 2012 at 18:59 Comment(0)
F
0

Info: This is a possible solution, when you use maven (pom.xml) with couple of projects.

If you are working with maven, make sure what version you are taking inside the according pom.xml (e. g. 1.0.1-SNAPSHOT ). It might be possible that your code is up-to-date, but your pom.xml dependencies are still taking the old JAR's/Snapshots (with the old code).

Finding the problem:

  • Try to debug the according file.
  • Therefore, set a breakpoint in the relevant code area.
  • When "source not found" appears, make sure to bind in the right project (where the .java file can be found).
  • The compile .class file opens up in the IDE editor.
  • Click "Link with Editor" to find the according JAR/Snapshot.
  • Now make sure that this JAR is the most recent one. Possibly there is a newer one. In that case, write the most recent version number in the pom.xml.
  • Then do a maven update and build (e. g. "mvn clean install -U") in the right project directory.
Fremitus answered 14/2, 2013 at 12:31 Comment(0)
R
0

If you are on eclipse or STS please install and Use GC(GrepCode Plugin) ,some time you don't need to attach the source .zip file into your project path so GrepCode works fine for you.

Rabble answered 3/6, 2013 at 9:11 Comment(0)
O
0

I've had a related issue in connection with Glassfish server debugging in Eclipse. This was brought about by loading the source code from a different repository (changing from SVN to GitHub). In the process, the wrong compiled classes were used by the Glassfish server and hence, the source and run time would be out of sync with break points appearing on empty lines.

To solve this, rename or delete the top folder of the classes directory and Glassfish will recreate the whole class directory tree including updating the class files with the correctly compiled version.

The classes directory is located in: /workspace/glassfish3122eclipsedefaultdomain/eclipseApps/< your Web Application>/WEB-INF/classes

Overlie answered 26/11, 2013 at 10:18 Comment(0)
W
0

In my case with tomcat projects I have checked project here: Window - Preferences - Tomcat - Source Path - Add java projects to source path

Weave answered 10/6, 2014 at 11:2 Comment(0)
I
0

In my case the Maven version of the other referenced project didn't match the version of the test project. Once they were the same, the problem disappeared.

Insalivate answered 18/9, 2014 at 17:36 Comment(0)
C
0

When running in debug mode, click Edit Source Lookup after suspended from thread. At this point, we should be able to add the necessary project/jar which contains your source code. After I added my current project in this way, and it solved my problem. Thanks

Conceit answered 24/2, 2015 at 22:10 Comment(0)
A
0

If you want to attach source code to any JAR by auto-downloading, try using this Eclipse plugin Java Source Attacher

enter image description here

Arguelles answered 20/3, 2015 at 4:35 Comment(0)
I
0

I had this problem while working on java code to do process on a excel file containing a data set, then convert it to .csv file, i tried answers to this post, but they did not work. the problem was the jar files themselves. after downloading needed jar files one by one(older releases) and add them to my project, "source not found" error vanished. maybe you can check your jar files. hope this would help.

Inocenciainoculable answered 27/4, 2015 at 21:21 Comment(0)
A
0

this worked for me

right click on project -> Properties -> Deployment Assembly -> add your jar

Alewife answered 27/7, 2015 at 10:59 Comment(0)
A
0

Go to Debug configuration in eclipse and use below goal to run your application.

-Dmaven.surefire.debug

e.g

-Dmaven.surefire.debug exec:java

Adriene answered 31/8, 2017 at 10:36 Comment(0)
H
0

Well, here's what worked for me. I tried every possible solution on StackOverflow that there was. I tried changing my source location in the debug menu, I installed the m2e Eclipse plugin, I changed from embedded Maven, and I installed the run-jetty-run and nothing worked. Now, I will caveat that I was not trying to view an external person's source code, I just wanted to see my OWN code, but every time I "stepped in" to my methods that I wrote that were in MY project, I got the "Source now found" error.

After finally asking an expert, my issue was that the first thing Eclipse was doing was calling a ClassLoader, which you can see from the debug stack. All I had to do was F6 (step over) and then it took me back to my original call and then F5 (step in). And there was my code. Sigh...such a simple fix but an hour wasted.

Houselights answered 6/4, 2018 at 15:17 Comment(0)
S
0

For beginners,

There is a possibility that the jar file is a part of the project which you have not yet included in the Eclipse workspace.

For that, you need to know the project name of the jar file. Say for example, its abc-18.0.0-SNAPSHOT.jar, it means that the project you are supposed to include in your workspace is abc.

Saransarangi answered 10/9, 2018 at 6:53 Comment(0)
E
0

In eclipse photon try to turn off "Window->Preferences->Java->Debug->Use advanced source lookup"

Edit: There is a related bug in this version of eclipse which leads to a "source not found" message while debugging Java applications. See bug report bugs.eclipse.org/bugs/show_bug.cgi?id=537699 for more details

Epp answered 18/9, 2018 at 12:37 Comment(1)
Ok, there is a related bug in this version of eclipse which leads to a "source not found" message while debugging Java applications. See bug report bugs.eclipse.org/bugs/show_bug.cgi?id=537699 for more detailsEpp
S
0

I had the same issue with eclipse 2019-03 (4.11.0) and I was only able to solve this by doing the debugging via remote debugging instead of directly launching it in debug mode.

Syndetic answered 3/4, 2019 at 10:9 Comment(0)
M
0

Attach source -> Add -> External Archive -> select the jar -> open -> done

the catch is look for the sources jar and attach this jar.

for example the jar ends with "-sources" Stax2-api-3.4.1-sources

Malcolmmalcom answered 21/2, 2020 at 16:41 Comment(0)
D
0

sometimes these thing happens because of the version also like if you are using latest version in that case it may arise try to use older version it will work.

Dieter answered 14/4, 2021 at 11:30 Comment(0)
N
0

None of the posted solutions worked for me. I was using eclipse to debug a servlet using a Tomcat server. My version of eclipse is 2022-12. The problem was with debugging libraries that I included in my WEB-INF/lib directory. This had been working for me in previous versions of eclipse. I can't recall if it ever worked using eclipse 2022-12. If it had, it certainly stopped working. As I said, none of the posted solutions worked for me, but I will add that I never did try rebuilding the workspace which was one solution that I had read.

Somehow in trying to update eclipse, I ended up breaking eclipse. After an update, it wouldn't start. Eclipse updates are strange and hard to understand. It goes, though a laborious process of trying alternative solutions. I think it's trying to figure out a compatible set of components to install based on the features and plugins that you have installed. That's what probably makes the update process somewhat unreliable. Anyhow, this issue forced me to reinstall eclipse. After the reinstall of eclipse, this problem went away. My guess is that something related to an eclipse update or possibly adding some marketplace plugin had broken this feature from working.

Nun answered 14/3, 2023 at 18:45 Comment(1)
It turns out, that reinstalling Eclipse did not solve my problem. I got the illusion that it had, because I was actually debugging code in the java file that I would get the message to locate the source for. The problem that I now see is that eclipse will not find the source code for private classes contained in a public class. Now that I know what's happening, I'll see if there is a way for me to code around this so that I can debug those classed too! At least I have a more definitive statement as to why I can't locate the source code and why the other posted solutions didn't work.Nun
I
0

In my case I put many breakpoints in different project, and when I run debugger, he can not find need source folder! I got the error "Source not found"

To fix it I removed all the breakpoints by going to Windows -> Show View -> Breakpoints -> right click -> remove all.

Then I could add breakpoints as needed

Inhale answered 3/4, 2023 at 12:35 Comment(0)
O
-1

If your are trying to debug your maven java project, and eclipse is not able to find your source, try one of these.

  1. Try adding these lines in the pom.xml
<build>**<sourceDirectory>src/main/java</sourceDirectory>**...

Try maven->update and then debug

  1. Go to the root directory of the project;

mvn eclipse:eclipse

now try debugging

Objection answered 7/9, 2016 at 19:41 Comment(0)
C
-5

In my case problem was resolved by clicking Remove All Breakpoints

Colloquy answered 15/11, 2013 at 7:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.