在 Visual Studio 代码 (VsCode) 和 Java 11 中使用 SonarLint 时出错

Error using SonarLint in Visual Studio Code (VsCode) and Java 11

我在 visual studio 代码中使用 SonarLint 时遇到问题,我在 java 8 中一直很好地使用这个插件,但上周左右,Vscode 需要 java 11 作为最低 java 版本,当我更新这个时(我一直在我的项目中使用 java 8,根据 Vscode 可以使用两个版本),插件无法正常启动,这是一个错误: [错误 - 16:57:02.682] 分析失败。

[错误 - 16:57:02.683] java.lang.IllegalStateException:没有文件或目录匹配 'C:\Users\MyUser.m2\repository\com\sun\java\tools\tools-11.jar'

我知道 tools.jar 在 java 11 中不存在,我找不到一个 jar 来替换它或解决这个问题的方法。 我正在使用最新版本的 sonarLint 插件 1.17.0

感谢您的回答。

我试过了,一切正常。我可以验证一下吗?

你是这样设置settings.json文件的吗?

"java.home": "[Path to JDK]", // For example: D:\workSoft\JDK11

"java.configuration.runtimes": [  // This should be setted in User settings.json
    {
      "name": "JavaSE-11",
      "path": "[Path to JDK]"
    },
    {
      "name": "JavaSE-1.8",
      "path": "[Path to JDK]",
      "default": true
    }
  ]

我试过了,一切正常。 java 扩展依赖于 JDK11 而我的项目依赖于 JDK8。 SonarLint 也很好用。

您可以在 SonarLint 扩展的详细信息页面中找到它:

SonarLint 语言服务器需要 Java 运行时 (JRE) 8 或 11。如果您的计算机上已经安装了一个,SonarLint 应该会自动找到并使用它。 如果在通常的地方找不到合适的 JRE,SonarLint 会请求您的许可来下载和管理它自己的版本。 最后,您可以在 VS Code 设置中使用 sonarlint.ls.javaHome 变量显式设置 JRE 的安装路径。例如:

{
    "sonarlint.ls.javaHome": "C:\Program Files\Java\jre1.8.0_131"
    //I tried: both of "D:\workSoft\JDK8" and "D:\workSoft\JDK11" works.
}

要求 SonarLint 语言服务器需要 Java Runtime (JRE) 8 或 11。如果您的计算机上已经安装了一个,SonarLint 应该会自动找到并使用它。

如果在通常的地方找不到合适的 JRE,SonarLint 会请求您的许可来下载和管理它自己的版本。

最后,您可以在 VS Code 设置中使用 sonarlint.ls.javaHome 变量显式设置 JRE 的安装路径。例如:

{
    "sonarlint.ls.javaHome": "C:\Program Files\Java\jre-11.0.11"
}

在 Windows 上,必须转义反斜杠,例如C:\程序Files\Java\jdk-11.0.11 在 macOS 上,此路径应包含 /Contents/Home 目录,例如 /Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home

要分析 JavaScript 和 TypeScript,SonarLint 还需要 Node.js。

要启用对 Java 的支持,您需要 Java VSCode 扩展的语言支持(0.56.0 或更高版本)。

对 Apex 和 PL/SQL 的支持仅与 SonarQube/SonarCloud 一起提供。对于 Apex,您还需要 Salesforce Extension Pack VSCode 扩展。

转到文件 -> 首选项 -> 设置

然后搜索 sonarlint 以调出它的设置

在此处复制并粘贴您的 java 目录路径。就我而言,我不得不转义反斜杠。

只是对答案的补充,如果您在 Windows 中使用 VSCode 和 WSL 并安装了“Remote - WSL”扩展。您需要:

  1. 在 WSL 中安装 JDK 11(例如 Ubuntu)
  2. 更新 WSL /home/$username/.settings.json 下的 vscode-server/data/Machine 以添加属性“sonarlint.ls.javaHome”并将值设置为 [=22] 的主路径=] WSL 11