SBT 0.13.11无法在代理后面下载依赖项

Rap*_*l K 0 scala intellij-idea sbt

在代理服务器后面使用Windows 7、64位。

我已经下载并安装了最新版本的SBT(0.13.11),Scala(2.11.8)和IntelliJ IDEA社区(2016.1.2)。当我尝试在IntelliJ中启动新项目时,我可以使用的最新SBT版本是0.13.8,而不是0.13.11。有谁知道为什么会这样吗?如果我尝试开始一个新项目,则会收到错误消息:

错误:导入SBT项目时出错:
...

[警告] ::无法解决的依赖::
[警告] :::::::::::::::::::::::::::::::::::::::::::::::::
[警告] :: org.scala-lang#scala-library; 2.11.8:未找到
[警告] :: org.scala-lang#scala-compiler; 2.11.8:未找到
[警告] :::::::::::::::::::::::::::::::::::::::::::::::::
[警告] 
[警告]注意:未解决的依赖项路径:
[警告] org.scala-lang:scala-library:2.11.8((sbt.Classpaths)Defaults.scala#L1203)
[警告] +-默认值:untitled1_2.11:1.0
[警告] org.scala-lang:scala-compiler:2.11.8
[警告] +-默认值:untitled1_2.11:1.0
[trace]禁止堆栈跟踪:对完整输出运行'last *:update'。
[trace]堆栈跟踪被抑制:对完整输出运行'last :ssExtractDependencies'。
[错误](:update)sbt.ResolveException:未解决的依赖项:org.scala-lang#scala-library; 2.11.8:找不到
[错误]未解决的依赖关系:org.scala-lang#scala-compiler; 2.11.8:找不到
[错误](*:ssExtractDependencies)sbt.ResolveException:未解决的依赖关系:org.scala-lang#scala-library; 2.11.8:找不到
[错误]未解决的依赖关系:org.scala-lang#scala-compiler; 2.11.8:找不到
[错误]总时间:4秒,已于2016年5月25日上午10:51:00完成
Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize = 384M;在8.0中删除了支持
提起_JAVA_OPTIONS:-Djava.net.preferIPv4Stack = true

请参阅C:\ Users \ Rk.IdeaIC2016 \ system \ log \ sbt.last.log中的完整日志

修改了一会儿之后,我发现sbt about在终端上键入内容时,我被告知我具有SBT版本0.13.8,该版本是针对Scala 2.10.4构建的。看起来不对!如果我进入IntelliJ并选择SBT构建为0.13.8,Scala构建为2.10.4,我不会出错!

因此,这非常令人困惑,因为尚不清楚代理是否是问题所在。似乎如果我可以将SBT更新到版本0.13.11,那么整个工作就可以了。

任何见识或帮助将不胜感激-我很高兴学习Scala,但是这些技术难题使我停滞不前。

编辑:当我sbt compile在项目目录中运行时,我收到以下输出: 在此处输入图片说明

Ser*_*gey 5

您的sbt输出有一条红线:

[error] Server access Error: Connection refused: connect url=https://repo1.maven.org/maven2/org/scala-lang/scala-library/2.11.8/scala-library-2.11.8.pom
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为您位于代理之后,并且从0.13.9版本开始,默认情况下sbt使用https进行所有连接。sbt 0.13.8仍使用http,这就是为什么此问题在此版本中未显示。

解决此问题的最简单方法是修改sbt.bat脚本,并在命令行中添加一个参数,以启动sbt可执行文件:

-Dsbt.repository.secure=false
Run Code Online (Sandbox Code Playgroud)

此命令强制sbt使用http代替。

一种似乎更正确但更复杂的修复方法涉及从您使用的Maven存储库中手动提取https证书,并使用keytool将其安装到JDK的cacerts密钥存储中-但是,在打开https时,这种复杂的方法似乎无法涵盖所有​​情况完全像一个魅力。