收到致命警报:protocol_version 构建失败 Gradle/Maven

Posted

技术标签:

【中文标题】收到致命警报:protocol_version 构建失败 Gradle/Maven【英文标题】:Received fatal alert: protocol_version build failure Gradle/Maven 【发布时间】:2018-12-08 00:14:29 【问题描述】:

我的一个项目的构建开始失败,出现以下异常

   > Could not resolve org.slf4j:slf4j-api:[1.6.1,).
  > Failed to list versions for org.slf4j:slf4j-api.
     > Unable to load Maven meta-data from https://repo1.maven.org/maven2/org/slf4j/slf4j-api/maven-metadata.xml.
        > Could not GET 'https://repo1.maven.org/maven2/org/slf4j/slf4j-api/maven-metadata.xml'.
           > Received fatal alert: protocol_version

环境:

Java 7 Gradle 3.5

【问题讨论】:

【参考方案1】:

Maven Central 和 Bintray 已宣布将停止对 TLS v1.1 及更低版本的支持。 如果您使用 Java 6 或 7 并使用 Gradle 版本 2.1 至 4.8,您将受到影响。

GRADLE:

检查 gradle 版本

gradle --version

如果所有这些都是真的,你必须采取行动:

JVM 版本为 Java 7u130 或更低且 Gradle 版本介于 2.1 和 4.8(含)之间 并且您已声明 mavenCentral() 或 jcenter() 的存储库

您可以采取以下任一操作来使用 TLS v1.2+:

使用 Java 1.7.0_131-b31 或更高版本运行 Gradle 或升级到 Gradle 4.8.1 或更高版本 或将 mavenCentral() 替换为 maven url = "http://repo.maven.apache.org/maven2" 和 jcenter() 与 maven url = "http://jcenter.bintray.com"

建议使用前两种解决方案,因为第三种解决方案可能会引发攻击。

来源:https://blog.gradle.org

Maven:

如果您使用的是 Maven,请使用下面给出的命令

mvn -Dhttps.protocols=TLSv1.2 install

【讨论】:

IBM JDK 1.8.0 也有同样的问题。我不记得安装它,但不知何故它被设置为我的默认 Java。我将默认设置改回 Oracle JDK 1.8.0,现在 Gradle 又可以正常工作了。 Visual Studio Cordova 应用程序怎么样?我得到了同样的错误,但它明确需要 Gradle 2.1.0。我试过4.8.1,但它不接受。 尝试使用 maven url 'repo.maven.apache.org/maven2' name 'Maven Central' maven url 'jcenter.bintray.com' name 'JCenter' 而不是 mavenCentral() 和 jcenter()。【参考方案2】:

IBM JDK

如果您使用的是 IBM IDK,则需要设置以下 JVM 参数。

com.ibm.jsse2.overrideDefaultProtocol=SSL_TLSv2. 

参考 IBM 文档:https://www.ibm.com/support/knowledgecenter/en/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/overrideSSLprotocol.html

所以,在 Eclipse IDE 中,

打开“运行->运行配置”;展开“Gradle Project”并选择运行配置(构建)

如下设置JVM参数 set jvm argument

【讨论】:

另外,如果您在 eclipse /STS 中看到此问题,请编辑 eclipse.ini 或 sts.ini 并提供 jvm 参数 -Dhttp.protocols=TLSv1.2【参考方案3】:

如果您对 pom.xml 有类似问题 - 如果可能,只需将 maven-compiler-plugin 源和目标版本更新到 1.8。

【讨论】:

以上是关于收到致命警报:protocol_version 构建失败 Gradle/Maven的主要内容,如果未能解决你的问题,请参考以下文章

收到致命警报:protocol_version 和“parent.relativePath”指向错误的本地 POM

收到致命警报:与 Tomcat 的握手失败

SSLHandshakeException:收到致命警报:handshake_failure

Java - 收到致命警报:handshake_failure

收到致命警报:bad_certificate

SSL:收到致命警报:handshake_failure