Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java sources replaced by decompiled files in Intellij

When I'm opening a specific class using ctrl + right click I should be redirected to a window with the java sources which contains all the lines and the appropriate comments. But instead I get a window with the decompiled .class file.

I have tried to deactivate the decompiler plugin but it does not work.

If I add http://docs.oracle.com/javase/8/docs/api to Project Structure -> SDKs -> Documentation Paths I can get an overview of the class or method's I'm rolling over, but still can't open the right source file.

Any ideas?

like image 593
Lucian Avatar asked Jul 16 '16 15:07

Lucian


People also ask

What is a decompiled .class file?

A Java Decompiler is a special type of decompiler which takes a class file as input and produces Java source code as output. The decompilation is exactly the reverse process of compilation. Thus, decompiler does not produce a replica of the source code.


1 Answers

When navigting to sources, IDEA will first go to attached sources. If not present, it will decompile the class and display it.

Try the following troubleshooting to track down the issue:

1. Make sure the sources are properly attached.

For libraries, Open the Project Structure dialog (Ctrl+Alt+Shift+S or ;) and sel4ct "Libraries" on the left under "Project Settings". Find the library in question, and select it. It will show if the source is attached. You mentioned you have Maven's "Automatically download" sources/documentation both checked. So for any maven libraries that have source available, it should be listed.

enter image description here

If it is not listed or is in red, run "Download Sources" or "Download Sources and Documentation" enter image description here from the Maven tool window. If the source is till in red, it likely means it is not available for that artifact in the maven repository. Use Maven Search to verify such.

For the JDK, select "SDKs" in the Project Structure dialog, find the JDK, and then select the "Sourcepath" tab. Make sure the {jdk-home}/src.zip file is listed.

enter image description here

IDEA should automatically set this when you add the JDK, but if not, add it.

2. Make sure the source JAR/ZIP file is not corrupt

Navigate to the archive in explorer/finder and make sure it can be opened and viewed.

3. Refresh IDEA's Caches

It's possible that IDEA's caches/indexes are corrupted. As such, IDEA is not "seeing" the link between the class and the source code. Go to File > Invalidate Caches / Restart...". Invalidate the caches and restart IDEA. Wait for IDEA to finish re-indexing the project and libraries (watch the progress in the bottom right of the IDEA window).

One of the above should resolve the issue.

FYI, If you do not want IDEA to decompile code(as a backup to no source being present), to the best of my knowledge (and based on the its help page), the only way to do such is to disable the "Java Bytecode Decompiler" in the Plugins list.

like image 172
Javaru Avatar answered Oct 24 '22 21:10

Javaru