我正在使用 VSCODE 和“Java 扩展包”开发 Java 代码。我遇到了 vscode 的代码导航无法按预期工作的问题。
以前,我可以使用“Ctrl+Click”(请参阅说明:https://code.visualstudio.com/docs/editor/editingevolved) 检查 Java 包中的定义,例如 java.util.HashMap 等。
但是,重新安装操作系统后,代码导航无法按预期工作。与网上的一些帖子不同(请参阅https://github.com/Microsoft/vscode-go/issues/966或者https://github.com/Microsoft/vscode-cpptools/issues/756),在我的例子中,它可以工作,但它会显示 .class 文件,并在文件顶部显示此类注释。让我使用 Hashmap 作为示例。
/* HashMap.类 */
// 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
...
}
我需要的是导航到 HashMap.java 而不是 HashMap.class。我使用“设置同步”扩展来恢复我之前的所有设置,所以我认为我的设置没有任何问题。我仍然会在下面提供一些相关的用户设置
"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",
更多信息:
操作系统:Ubuntu 18.04 LTS
VSCODE 版本:1.22.2
openjdk 版本“1.8.0_162”
任何帮助都将不胜感激!谢谢!
答案1
对于 ubuntu 用户,你可以尝试下面的命令行
sudo apt install openjdk-{jdk version}-source
答案2
我遇到了同样的错误,只不过我的本地存储库中的源 jar 而不是 HashMap。
我通过退出 Visual Studio Code、删除所有.classpath
、.factorypath
和.project
文件(我的项目有子模块,因此有多个这样的文件)来修复它,然后重新打开 VS Code 并让它再次找到所有内容。
可能有更优雅的方法来做到这一点,但蛮力有效。
答案3
像这样安装 openjdk-{jdk 版本}-source
sudo apt install openjdk-{jdk version}-source
就我而言,我使用的是 openjdk-19,所以我将像这样安装
sudo apt install openjdk-19-source
如果您使用的是 vs-code 或 coc.nvim(如果是 neovim),则必须按如下方式编辑您的配置(在 coc.nvim 中,您必须编辑 coc-settings.json,而在 vs-code 中有一个用于设置的 json)
"java.configuration.runtimes": [
{
"name": "JavaSE-19",
"path": "/usr/lib/jvm/java-19-openjdk-amd64",
"default": true
}
],
"java.jdt.ls.java.home": "/usr/lib/jvm/java-19-openjdk-amd64",