Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我会收到javax.net.ssl.SSLException:收到致命警报:ant的protocol_版本?_Java_Maven_Ssl_Ant_Ivy - Fatal编程技术网

为什么我会收到javax.net.ssl.SSLException:收到致命警报:ant的protocol_版本?

为什么我会收到javax.net.ssl.SSLException:收到致命警报:ant的protocol_版本?,java,maven,ssl,ant,ivy,Java,Maven,Ssl,Ant,Ivy,2018年6月后,我收到了以下错误: javax.net.ssl.SSLException: Received fatal alert: protocol_version at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) at sun.security.ssl.

2018年6月后,我收到了以下错误:

javax.net.ssl.SSLException: Received fatal alert: protocol_version
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
        at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1979)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1086)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        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:731)
        at org.apache.tools.ant.taskdefs.Get$GetThread.get(Get.java:652)
        at org.apache.tools.ant.taskdefs.Get$GetThread.run(Get.java:642)

原因是
ant
从Maven Central下载了一些工件,例如使用
ivy
插件。 默认情况下,Java7使用旧的TLS协议版本。 2018年6月,到Maven Central的SSL连接将不再支持TLS 1.0和1.1协议

至少对于Java 7,可以通过将TLS版本指定为Java系统属性来解决这个问题

所有示例都运行默认的ant任务

适用于Windows

java -Dhttps.protocols=TLSv1.2 -cp %ANT_HOME%/lib/ant-launcher.jar org.apache.tools.ant.launch.Launcher
适用于Linux

java -Dhttps.protocols=TLSv1.2 -cp ${ANT_HOME}/lib/ant-launcher.jar org.apache.tools.ant.launch.Launcher
需要将
ANT\u HOME
作为系统变量,或指定ANT库的完整路径(
c:/ANT/
-是指向
ANT
安装的路径)

更新Java 7版本


通过更新Java7版本也可以解决这个问题。但上一个可用版本(
7u80
)无法解决此问题。需要使用Oracle高级支持(以前称为Java for Business)提供的更新。

如果使用maven project,请尝试将其添加到pom.xml中。原因可能是您使用的是旧版本的javax.mail。这对我有用

<dependencies>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.6.2</version>
    </dependency>
</dependencies>

com.sun.mail

<dependencies>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.6.2</version>
    </dependency>
</dependencies>