vscode 代码导航“无法获取源。”

vscode 代码导航“无法获取源。”

我正在使用 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",

相关内容