【问题标题】:SBT 0.13.11 cannot download dependencies behind a proxySBT 0.13.11 无法下载代理后面的依赖项
【发布时间】:2016-09-23 06:34:17
【问题描述】:

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

我已经下载并安装了最新版本的 SBT(0.13.11)、Scala(2.11.8) 和 IntelliJ IDEA Community(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: unresolved dependency: org.scala-lang#scala-library;2.11.8: not found
[错误] 未解决的依赖项: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 s,完成时间 2016 年 5 月 25 日 10:51:00 AM
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 时,我收到以下输出:

【问题讨论】:

    标签: scala intellij-idea sbt


    【解决方案1】:

    你的 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
    

    这是因为你在代理后面,从 0.13.9 版本开始,sbt 默认使用 https 进行所有连接。 sbt 0.13.8 仍然使用 http,这就是为什么这个问题在这个版本中没有出现。

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

    -Dsbt.repository.secure=false
    

    这个命令强制 sbt 使用 http。

    一种看似更正确但更复杂的修复方法涉及从您使用的 maven 存储库中手动提取 https 证书,并使用 keytool 将它们安装到 JDK 的 cacerts 密钥库中 - 但是这种复杂的方法似乎并不涵盖所有情况,而完全关闭 https 就像一个魅力。

    【讨论】:

    • 当我将该命令放在 IntelliJ 中 SBT 设置的 VM 参数中时,这解决了问题(大部分)。现在一切正常。非常感谢!
    • 永久解决方案是 this 指导将 https 链接的根证书保存到 jre cacerts 文件,这将解决所有 PKIX 认证问题。
    • 谢谢,这确实解决了我的问题。我已经配置了所有代理设置,但它仍然一直失败。可能他对证书不满意!但是错误信息并没有告诉你!
    【解决方案2】:

    假设在您的<project-name>/project 文件夹中有一个build.properties 文件具有一个属性sbt.version=0.13.8

    【讨论】:

    • 很抱歉,我不明白这对我有什么帮助。
    • /project 文件夹中有build.properties。里面写着sbt.version = 0.13.8。我的build.sbt 文件位于project-name 目录中。
    • 对不起,build.properties 文件当然要修改。你需要 0.13.11 不是吗?
    【解决方案3】:

    使用错误配置的 sbt 0.13.11 似乎存在问题。我只能通过将 https 代理设置放入 http 参数来使其工作。

    所以它确实对每个连接都使用了 https,但忽略了 https 代理参数。

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2020-03-28
      • 2019-07-03
      • 1970-01-01
      • 2013-05-22
      相关资源
      最近更新 更多