收到致命警报: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
SSLHandshakeException:收到致命警报:handshake_failure