gradle VSCode中的Java Maven项目:无法找到到请求目标的有效证书路径

pxyaymoc  于 2023-03-08  发布在  Vscode
关注(0)|答案(1)|浏览(216)

完整免责声明:* * 我不是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项目时,目前还不清楚使用了多少不同的"层"。

j5fpnvbx

j5fpnvbx1#

尝试为我的环境解决此问题时,我发现了您的评论
看起来“Java语言支持”(VSCode插件)使用了不同的jdk ...
在我的案例中,这是发现修复的关键。This link解释说,扩展确实使用了嵌入式JRE,并提供了问题的解决方案。
嵌入式JRE位于(取决于扩展版本和操作系统):

.vscode/extensions/redhat.java-1.15.0-linux-x64/jre

通常直接位于Linux和MacOS的$HOME下,Windows的%USERPROFILE%下,嵌入式JRE有一个cacerts文件,例如:

.vscode/extensions/redhat.java-1.15.0-linux-x64/jre/17.0.6-linux-x86_64/lib/security/cacerts

要解决此问题,您可以:
1.将所需的证书添加到嵌入式JRE cacerts文件中,* 但是,每次更新扩展名时都需要重复此操作 *,或者
1.通过修改VSCode用户设置(settings.xml文件)"java.jdt.ls.vmargs"条目以 * 追加 * 属性,将嵌入式JRE配置为使用包含所需证书的另一个证书存储文件:

"-Djavax.net.ssl.trustStore=path/to/other/cacerts -Djavax.net.ssl.trustStorePassword=changeit"

替换正确的证书存储路径和密码。
在选项2的情况下,您只需使用已修改的Open JDK 11 cacerts文件的路径。

相关问题