我正在尝试下载 eclipse 的 kotlin 插件。我能够连接到 Eclipse 市场,但是当我尝试下载它时,出现错误:
Unable to read repository at
https://dl.bintray.com/jetbrains/kotlin/eclipse-plugin/last/content.xml.
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
我位于防火墙后面,并且已配置代理设置。我从这个网站下载了证书并将其添加到keytool但错误仍然相同。我如何解决此错误或手动安装此插件?
给出的异常非常清楚:
sun.security.validator.ValidatorException
这意味着 eclipse 获得的证书与 eclipse 与之对话的主机不匹配 - 或者这个故事的变体。这是由于企业环境中您的工作站被代理、防火墙或检查 https 流量的设备拦截。
1。在java的cacerts中添加拦截证书
使用命令行将“拦截证书”(参见 ps)添加到 java cacerts 密钥库中(或使用一些 GUI,如“KeyStore Explorer”或 google 提供的任何内容)。
参考:如何正确地将自签名证书导入到默认情况下可供所有 Java 应用程序使用的 Java 密钥库中?
2。修复 eclipse.ini 并在下面添加“-vmargs”:
-Djavax.net.ssl.trustStore=cacerts
-Djavax.net.ssl.trustStorePassword=changeit
注意:使用“cacerts”的完整路径,我将 cacerts 保存在 eclipse 文件夹中。避免空格并且绝对不要引号,否则您会遇到 trustAnchors 异常。
现在市场商店和“安装新软件”应该像我一样工作。祝你好运。
PS:要查找拦截证书,请打开浏览器,访问 stackoverflow.com,单击 https 符号旁边的浏览器锁定图标,下载找到的所有证书并将其保存为文件 pem/cer。将这些导入到 cacerts 中。
PS:有关命令行的更多详细信息,由于引号和空格而导致的 trustAnchors 异常,请参见:stackoverflow 和 stackoverflow。
对标题和答案的备注:
-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient4
- 未解决已解释的异常。它解决了其他类型的问题。 标题应该是“由于证书验证异常而无法安装 Eclipse 插件”。
能够通过将以下内容附加到
eclipse.ini
来解决该问题:
-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient4
在这里找到上述解决方案:https://stackoverflow.com/a/33631964/4447655 如果这仍然不起作用,还有一个解决方案,在 Eclipse 代理设置中取消选中 SOCKS。
在 eclipse 中设置代理设置时,您将获得三个要配置的代理条目:HTTP、HTTPS 和 SOCKS。 在 HTTP 和 HTTPS 代理条目中配置用户名和密码,但不在 SOCKS 中配置。试试这个,可能会有帮助。
另请确保您输入的用户名和密码正确。
配置完成后请重启eclipse,配置生效需要重启
从这里手动下载插件
https://dl.bintray.com/jetbrains/kotlin/eclipse-plugin/0.8.5/
(查看这里是否有最新版本)
https://dl.bintray.com/jetbrains/kotlin/eclipse-plugin
然后
通过升级 JVM(以及受信任的证书?)来解决
您可以尝试这个解决方案:
> sudo apt-get install ca-certificates-java
> sudo update-ca-certificates -f
添加到 eclipse.ini
-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient4
这就是我解决的方法 -
确保我在 C:\Program Files\Java 中只有一个 JDK 版本,即只安装了一个版本的 java。并在文件末尾添加以下行 - C:\Users\xyz\OneDrive - AEP Clipse Clipse.ini
-Djavax.net.ssl.trustStore=cacerts
-Djavax.net.ssl.trustStorePassword=changeit
在 Edge 浏览器中打开 URL - https://ecd-plugin.github.io/update/
将“保存类型”更改为“DER编码的二进制,单证书”,输入我使用的文件名'ecd-plugin.github.io'并保存。[savefile]
打开命令提示符并转到 jdk 文件夹 lib security 例如'C:\Program Files\Java\jdk-21\lib\security'
确保使用以下命令设置 PATH,以避免错误 - “'keytool' 未被识别为内部或外部命令、可操作程序或批处理文件。”
set PATH=%PATH%;C:\Program Files\Java\jdk-21\bin
写下命令-
C:\Program Files\Java\jdk-21\lib\security>keytool -import -alias C:\Users\xyz\Downloads\ecd-plugin.github.io -keystore "C:\Program Files\Java\jdk-21\lib\security\cacerts" -file C:\Users\xyz\Downloads\ecd-plugin.github.io.der
输入“是”,作为其提出的问题的答案,如果您不是管理员,您可能需要对 jdk 文件夹进行提升访问/完全访问。
一旦证书导入成功,重新启动 Eclipse 并重做安装插件的步骤..此后它对我有用。