在 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”扩展。您需要:
- 在 WSL 中安装 JDK 11(例如 Ubuntu)
- 更新 WSL /home/$username/.settings.json 下的 vscode-server/data/Machine 以添加属性“sonarlint.ls.javaHome”并将值设置为 [=22] 的主路径=] WSL 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”扩展。您需要:
- 在 WSL 中安装 JDK 11(例如 Ubuntu)
- 更新 WSL /home/$username/.settings.json 下的 vscode-server/data/Machine 以添加属性“sonarlint.ls.javaHome”并将值设置为 [=22] 的主路径=] WSL 11