【问题标题】:Sbt downloads the dependency but IntelliJ cannot resolve its usagesSbt 下载依赖项,但 IntelliJ 无法解析其使用
【发布时间】:2019-07-03 23:49:42
【问题描述】:

问题:

我对 Scala 非常陌生(但熟悉 Java)。我想克隆一个Sbt project,经过几次构建刷新后,它似乎终于同步了,但是当我打开其中一个项目文件时,它显示了Cannot resolve symbol cassovaryCassovary 是 Twitter 的一个库)。我检查了 IDEA 外部依赖项,令我惊讶的是,它仅通过其 META-INF 显示下载,当我检查本地“.ivy2”文件夹时,字节码和源文件就在那里!

有趣的是,所有库的依赖项都已解析并且 IDEA 可以正确加载它们。只有主依赖有这个问题。 Cassovary 库未加载,但它的依赖项是

Sbt 版本:1.2.1
IDEA 版本:20.18.3.2 社区版

我尝试过的:

缓存失效/重启,不同版本,手动删除.ivy2文件夹并重新下载依赖,检查Github中的库问题


build.sbt 文件

name := "fast-ppr"

version := "1.0"

scalaVersion := "2.11.11"

//resolvers ++= Seq(
//  Resolver.sonatypeRepo("releases"),
//  "Twitter Maven" at "https://maven.twttr.com"
//)

libraryDependencies += "com.twitter" %% "cassovary" % "4.0.0"
libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.6" % "test"

【问题讨论】:

  • 你已经为 intelliJ 安装了 scala 插件?
  • @Saurabh 是的。我使用了它捆绑的 sbt

标签: scala intellij-idea sbt


【解决方案1】:

想要提供一些通常可以帮助我解决此类想法问题的操作:

  1. 在将构建导入 Idea 之前尝试在控制台中运行 SBT 命令(如果已创建 .idea 文件夹,请在之前删除它)。在我目前的项目中,我们甚至在我们的新手常见问题解答中都有这样的步骤

  2. 尝试将 SBT 设置为 Idea 的默认构建选项(截图如下)。它大大减少了我奇怪的编译问题。

设置中的 Sbt 构建选项:

更新: 似乎 https://github.com/plofgren/fast-ppr-scala 最初是使用 Scala 2.10 构建的,而 cassovary 3.2.0 仅适用于 2.10。

请尝试设置 scalaVersion := "2.10.7" 并将原始版本的 cassovary 保留在 build.sbt 中。与 3.2.0 相比,库 API 在 4.0.0 中发生了更改,因此如果不更改代码,它就无法编译。这就是为什么你会出错。

然后你可以从控制台运行“sbt clean reload compile”,检查它是否有效。

AFAIK cassovary 自 4.0.0 起支持 2.11,因此要使用更新版本的库运行,您需要更新代码。

【讨论】:

  • 与 build.sbt 的原始版本相比,4.0.0 中的库 API 似乎发生了变化。 DirectedGraph 采用类型参数,当前代码无法编译(FastPPR.scala)。
  • 使用 scalaVersion := "2.10.7" 和 build.sbt 中设置的原始 cassovary 版本运行对我来说很好。要使用此库的更新版本,您需要更新代码。
猜你喜欢
  • 2021-03-09
  • 2015-09-16
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 2022-06-21
  • 2016-06-19
  • 2023-03-08
  • 2018-12-30
相关资源
最近更新 更多