完整免责声明:* * 我不是JavaMaven**
我的工作组开发了一个Java项目,由maven管理,应该是针对jdk-11编译的,他们都使用IntelliJ,我能够在这个平台上进行设置,我现在尝试在VSCode上进行同样的设置,因为我更熟悉它。
我安装了openjdk-11,在/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/lib/security
中添加了相关的cacerts
,将VSCode指向这个版本和IntelliJ用于编译的同一个maven可执行文件。
我可以通过执行mvn clean install
正确编译项目,并在Run/Debug窗口中运行应用程序的一部分(只需手动添加launch.json
中的所有classPaths
)。但是,Output窗口中的"Language Support for Java"选项卡仍然显示此错误
Cannot download published Gradle versions.
org.gradle.api.UncheckedIOException: Cannot download published Gradle versions.
....
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
[Error - 10:18:41] 27 Feb 2023, 10:18:41 Error occured while building workspace. Details:
message: The project cannot be built until build path errors are resolved;
看起来"Java语言支持"使用的是一个不同的jdk,没有安装cacerts,但是不知何故我找不到这个版本在哪里。我尝试在VSCode中指定正确的java_home
(也在Gradle中),但不知何故,我无法摆脱这个错误。我不知道这是否真的是一个问题,因为当我启动maven时,项目正在编译,但如果能修复它就好了。对我来说,在VSCode中打开这样的java项目时,目前还不清楚使用了多少不同的"层"。
1条答案
按热度按时间j5fpnvbx1#
尝试为我的环境解决此问题时,我发现了您的评论
看起来“Java语言支持”(VSCode插件)使用了不同的jdk ...
在我的案例中,这是发现修复的关键。This link解释说,扩展确实使用了嵌入式JRE,并提供了问题的解决方案。
嵌入式JRE位于(取决于扩展版本和操作系统):
通常直接位于Linux和MacOS的
$HOME
下,Windows的%USERPROFILE%
下,嵌入式JRE有一个cacerts
文件,例如:要解决此问题,您可以:
1.将所需的证书添加到嵌入式JRE
cacerts
文件中,* 但是,每次更新扩展名时都需要重复此操作 *,或者1.通过修改VSCode用户设置(
settings.xml
文件)"java.jdt.ls.vmargs"
条目以 * 追加 * 属性,将嵌入式JRE配置为使用包含所需证书的另一个证书存储文件:替换正确的证书存储路径和密码。
在选项2的情况下,您只需使用已修改的Open JDK 11
cacerts
文件的路径。