【问题标题】:Error using SonarLint in Visual Studio Code (VsCode) and Java 11在 Visual Studio Code (VsCode) 和 Java 11 中使用 SonarLint 时出错
【发布时间】:2020-11-26 04:09:57
【问题描述】:

我在 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\11\tools-11.jar '

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

感谢您的回答。

【问题讨论】:

    标签: java visual-studio-code java-11 sonarlint


    【解决方案1】:

    要求 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:\Program 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 扩展。

    【讨论】:

      【解决方案2】:

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

      你是这样设置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.
      }
      

      【讨论】:

      • 也许,我使用了这个配置,我在 jre 8 和 jdk11 之间进行了更改,但结果是一样的,tools-11.jar 不存在,也许原因是我的 maven 版本,因为我使用私有存储库(如 jfrog)或其他原因是在 m2 存储库中有 jdk-11 和 jdk-8 的存储库,这是一个猜测,我不确定。
      • 您使用的是什么版本的 SonarLint?您是否尝试将其更新到最新版本?由于 tools.jar 是 JDK8 内置的,并且已从 JDK11 中删除。如果 SonarLint 兼容 JDK11,应该可以解决这个问题。您是否尝试过我在答案中提到的“sonarlint.ls.javaHome”?
      【解决方案3】:

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

      然后搜索 sonarlint 以调出其设置

      在此处复制粘贴您的 java 目录路径。在我的情况下,我必须避开反斜杠。

      【讨论】:

        猜你喜欢
        • 2019-10-26
        • 2021-03-18
        • 2017-02-15
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-13
        • 2019-09-11
        相关资源
        最近更新 更多