22

When I'm debugging my code in Eclipse, I get annoyed when I open up the editor to find out I cant edit it because I'm actually viewing the source of the .class file. How do I get Eclipse to open up the .java file instead of the .class file when in debug mode?

EDIT: When I hit a breakpoint in my code, it brings me to MyFile.class, instead of MyFile.java, so I can see my code but not edit it.

EDIT: I'm guessing it has somethign to do with Android and ADT R18

Tyler
  • 19,113
  • 19
  • 94
  • 151

4 Answers4

54

After I finally found some time and good reason to look into this issue a bit deeper I'll elaborate a bit on Thornbjorn's answer.

As of lately, Google changed the way your Android projects package your external Android libraries. In ADT R17 (I think) it started packaging the external projects source into .jar files and including them directly into your project in the Android Dependencies or /libs folder.

Now, when the debugger hits a breakpoint, it brings up your source code in the .jar, essentially telling you to edit a .class file. The problem is that this file is read-only and so you have to go find your .java source manually. (Pain)

The fix is to right click the Project name in the debug view, and select "Edit Source Lookup..." from the menu. From there, remove the Default lookup path. After that, manually add the associated projects (not jars) that your project references. This is done by clicking Add, selecting Java Project, then checking the appropriate projects.

Tyler
  • 19,113
  • 19
  • 94
  • 151
  • 7
    I searched for a long time to find this "Edit source lookup..." option. I finally found it where it's mentioned above in the Debug VIEW!! (The window with the stack and threads listed :)) Thank you! – Sean Aitken Jan 30 '13 at 21:59
  • 5
    Many thanks! Let me write down the detailed steps for those who still don't know how to fix. 1. Begin to debug your project in eclipse. 2. Eclipse menu: Window->Show View->Debug. 3. In Debug view, right click your project name, and select "Edit Source Lookup..." 4. Need not remove 'Default', just click 'Add...' -> Java Project -> The (library) project containing the source files. Make sure the selected project is upper than 'Default' in 'Edit Source Lookup Path' dialog. – Vince Yuan Sep 09 '13 at 08:40
  • 1
    This was driving me totally bonkers. But with your advice I finally fixed it. Thanks! – b-ryce Nov 19 '13 at 15:41
  • After I made this setting change, Eclipse cleared out the test-projects' run configurations (and it kept trying to launch my library project instead of the test project - and of course libraries can't be run directly). To fix it, I used an old-school technique: exit Eclipse and restart it. – Someone Somewhere Dec 20 '13 at 20:22
  • Does anyone know the steps for Intellij IDE? – Amar Magar Aug 02 '18 at 09:19
7

OK, so I hate to be "that guy", given the number of people for whom this worked, but this didn't work at all for me. I mean that the "Edit Source Lookup..." menu item was not in the context menu. I did not miss the instruction to do this in the Debug Perspective (presumably in the Project Explorer in the Debug Perspective). I tried it while the app was running and while the app was suspended. I tried checking the menu for the application's project (presumably what the instructions refer to) and for the library's project. No dice. This is with the latest Eclipse build.

However, I was able to resolve the issue:

  1. Set a breakpoint in either your application or the library you are trying to link source for. You can actually put this anywhere as long as the library you are trying to link source for has a function that will appear on the call stack when the breakpoint is hit.
  2. Start debugging your application.
  3. Navigate your app to hit the breakpoint.
  4. Make sure you are in the Debug perspective.
  5. In the Debug tab (where the call-stack appears), find any function from your library.
  6. Right-click that function. The "Edit Source Lookup..." menu option should be there (close to the bottom).
  7. From here, the instructions are the same as Styler's. Click "Add", select "Java Project" and add your project (or multiple projects).
  8. Before you exit the "Edit Source Lookup..." window, if you are like me, you will see that Eclipse has chosen to add a bunch of stuff to the list that you didn't choose. Some of that stuff (probably under expandable items with names like "Android Private Libraries" may be the jars for the libraries you just added source for. Remove those jars from the list.
  9. Profit!
Dave
  • 7,589
  • 12
  • 36
  • 42
6
  1. Open main project properties -> Java Build Path -> Projects tab and add there projects the main project depend on.
  2. Switch to Order and Export tab and uncheck Android Dependencies
  3. Enjoy
Sergei Krivonos
  • 4,217
  • 3
  • 39
  • 54
2

For some reason Eclipse does not believe that the class file comes from your Java file. This is frequently a malconfigured buildpath, or a jar-file used instead of the project generating the jar file.

Look in the project manager panel (<->button) to see where Eclipse finds the class file and then figure out why it uses that location instead of your project with the source file.

Thorbjørn Ravn Andersen
  • 73,784
  • 33
  • 194
  • 347
  • I think youre right because of how android is now packaging external android libraries in jars – Tyler Jul 11 '12 at 21:16