Java 如何强制JDK1.7的SBT安装程序始终使用Maven接受的HTTPS协议?

Java 如何强制JDK1.7的SBT安装程序始终使用Maven接受的HTTPS协议?,java,scala,maven,sbt,Java,Scala,Maven,Sbt,有一些主题与Maven存储库已更改为默认情况下JDK1.7不使用的TLS协议这一事实有关(有关更多信息,请参阅) 现在不可能使用旧的JDK(如1.7)访问这些存储库。看起来,我们可以使用以下环境变量来解决这个问题: export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8 -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2" 但这个变量似乎被SBT安装过程忽略了 在Debian 8.5上,我尝试使用以下命令安装SBT 0.13.1

有一些主题与Maven存储库已更改为默认情况下JDK1.7不使用的TLS协议这一事实有关(有关更多信息,请参阅)

现在不可能使用旧的JDK(如1.7)访问这些存储库。看起来,我们可以使用以下环境变量来解决这个问题:

export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8 -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2"
但这个变量似乎被SBT安装过程忽略了

在Debian 8.5上,我尝试使用以下命令安装SBT 0.13.16:

sudo echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt=0.13.16
它失败了,出现了如下错误:

Server access Error: Received fatal alert: 
protocol_version url=https://repo1.maven.org/maven2/org/scala-sbt/sbt/0.13.16/sbt-0.13.16.pom

Server access Error: Received fatal alert: 
protocol_version url=https://repo1.maven.org/maven2/org/scala-sbt/sbt/0.13.16/sbt-0.13.16.jar

Server access Error: Connection reset 
url=https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.16/ivys/ivy.xml

Server access Error: Connection reset 
url=https://repo.scala-sbt.org/scalasbt/ivy-snapshots/org.scala-sbt/sbt/0.13.16/ivys/ivy.xml
我无法升级到较新的SBT或JDK,因为我正在处理一个使用一些不推荐功能的遗留项目


如何正确安装SBT以及如何使所有工具(Maven、SBT、Java本身)始终遵守https.protocols设置?

我找到了一些解决方法

即使apt get安装失败,您仍然可以在之后运行
sbt
命令,这次它将选择JAVA_工具_选项设置,并能够从Maven下载所有依赖项


遗憾的是,由于Maven TLS改变了基于Debian的系统的Scala安装程序,如果与较旧的JDK一起使用,它就会被破坏。

您是否检查过只使用
-Dhttps.protocols=TLSv1.2
?@khmarbaise是的,仍然是相同的错误。但是我找到了一个解决办法——如果我以后单独运行SBT,它会选择java选项,下载必要的Scala包,并且工作得很好。似乎只是安装程序坏了,忽略了JAVA_TOOL_OPTIONS.Ok。那太好了。我建议将此作为其他来访者的答案。