【问题标题】:Fail to run "ant eclipse-files" due to "PKIX path building failed"由于“PKIX 路径构建失败”而无法运行“ant eclipse-files”
【发布时间】:2017-05-30 20:13:47
【问题描述】:

我运行 ant eclipse-files,但出现以下奇怪的错误,谁能帮助我?谢谢

[get] Error getting http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2 to /Users/jzhang/github/pig/build/ant-eclipse-1.0.bin.tar.bz2

BUILD FAILED
/Users/jzhang/github/pig/build.xml:311: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1937)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1478)
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:212)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1050)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
    at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:712)
    at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:737)
    at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:737)
    at org.apache.tools.ant.taskdefs.Get$GetThread.get(Get.java:626)
    at org.apache.tools.ant.taskdefs.Get$GetThread.run(Get.java:616)

我按照link here的指示 之后我就可以成功运行这个命令了。

keytool -list -keystore "$JAVA_HOME/jre/lib/security/cacerts"

这是密钥资源管理器的屏幕截图。但我仍然可以看到上面的错误。

【问题讨论】:

    标签: java eclipse ant


    【解决方案1】:

    请参考this答案供您参考。

    您需要将您的网络根 ssl 证书安装到您的 cacerts 文件中。

    但关键是找到给你这个错误的 jre!所以要确保两件事

    1. 将证书安装到eclipse正在使用的jre的cacart文件中

    获得首选项 => ANT=> 运行时 => 全局条目

    您可能会看到 ant 正在使用哪个 tool.lib 的 JDK。

    1. 证书是根证书
    2. 请确认您使用的是 /JDKPATH/jre/lib/security/cacerts “不是 /JDKPATH/lib/cacerts”

    3. 使用keystore explorer 代替命令行。

    【讨论】:

    • 我做了这两个步骤,但不幸的是仍然遇到了问题。我确信我在正确的 JDK 中做这件事。
    • 我也可以使用以下命令成功运行:“java SSLPoke downloads.sourceforge.net 443”成功连接
    • @zjffdu 更新了详细的答案。是的,您发现的可能有效,但这是永久解决方案!不仅适用于 eclipse,而且几乎所有请求 https 下载的 java 工具。
    猜你喜欢
    • 2016-12-15
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 2018-10-04
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多