Sbt下载依赖项,但IntelliJ无法解决其用法

时间:2019-02-10 07:42:33

标签: scala intellij-idea sbt

问题:

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

有趣的是,库的所有依赖项都已解决,IDEA可以正确加载它们。仅主要依赖项有此问题。 Cassovary not loaded correctly 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"

enter image description here

1 个答案:

答案 0 :(得分:0)

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

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

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

设置中的Sbt构建选项:

Sbt build option from settings

更新: 似乎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”,以检查其是否有效。

自4.0.0开始,AFAIK cassovary支持2.11,因此,要在更新版本的库中运行,您需要更新代码。