vscode code navigation "Failed to get sources."
I am using VSCODE to develop codes in Java with "Java Extension Pack". I encountered the issue that the code navigation of vscode doesn't work as expected.
Previously, I can use "Ctrl+Click"(please see the description: https://code.visualstudio.com/docs/editor/editingevolved) to check the definitions from Java packages, such as java.util.HashMap etc.
However, after re-install my OS, the code navigation didn't work as expected. Unlike some posts online(please see https://github.com/Microsoft/vscode-go/issues/966 or https://github.com/Microsoft/vscode-cpptools/issues/756), in my case, it works but it shows .class file with such comments on the top of the file. Let me use the Hashmap as the example.
/* HashMap.class */
// Failed to get sources. Instead, stub sources have been generated by the disassembler.
// Implementation of methods is unavailable.
package java.util;
public class HashMap<K,V> extends java.util.AbstractMap implements java.util.Map, java.lang.Cloneable, java.io.Serializable {
// many declartions for methods below
...
}
What I need is navigating to the HashMap.java rather than HashMap.class. I use "Setting Sync" extension which restores all my previous settings, so I don't think there are any issues about my setting. I still will provide some related User settings below
"java.classPath": [],
// Specifies the folder path to the JDK (8 or more recent) used to launch the Java Language Server.
"java.home": null,
// Installation directory of Java 8
"java.home": "",
// Traces the communication between VS Code and the Java language server.
"java.trace.server": "off",
More info:
OS: Ubuntu 18.04 LTS
VSCODE version: 1.22.2
openjdk version "1.8.0_162"
Any help will be appreciated! Thank yoU!
Solution 1:
For ubuntu users, you could try the command line below
sudo apt install openjdk-{jdk version}-source
Solution 2:
I had the same error, except with a source jar in my local repository rather than HashMap.
I fixed it by quitting Visual Studio Code, removing all the .classpath
, .factorypath
, and .project
files (my project has submodules so there are multiple of these), then reopening VS Code and letting it find everything again.
There's likely a more elegant way to do this but brute force worked.