IntelliJ 无法识别 Scala 的 build.sbt

Scala's build.sbt not recognised by IntelliJ

我遇到一个问题,我的 build.sbt 文件无法使用 IntelliJ(Ultimate 2020.2.3)正确获取。我使用 IntelliJ 向导(文件 > 新建 > 项目 > scala / sbt)创建了一个新的 Scala sbt 项目,并向 buid.sbt 文件添加了一个新的依赖项,但是当我尝试将其导入到我的 class 文件,由于依赖性问题,IntelliJ 不会编译我的项目。

sbt 工具 window 获取外部依赖项,但我的项目“外部依赖项”根本不包含库,即使在我刷新项目后也是如此。另外,我的 build.sbt 文件中有一堆错误,好像它没有被 IntelliJ 正确识别,但我已经安装了 Scala 插件,所以我不知道我还能做什么?

在这里你可以看到我已经将 org.slf4j 依赖项添加到我的 build.sbt;它被 sbt 工具 window(右边)拾取,但不是我的项目(左边)

当我将鼠标悬停在 build.sbt 文件中的 libraryDependencies 上时,它似乎无法识别 sbt 语法:

我无法将库导入我的 class 文件,项目无法构建:

我是 Scala 的新手,我只是想创建一个基本的 hello world 项目,但我似乎无法解决这个令人沮丧的问题。

您可以先尝试在某个目录下手动创建一个SBT工程。 build.sbt一个人就够了。

然后 运行 sbt 在该目录中查看 SBT shell 是否正常工作。使用一些 helloworld 应用程序尝试一些命令,例如 sbt compilesbt run。创建 helloworld 应用程序时,请注意放置它的目录结构,即:src/main/scala/HelloWorld.scala.

如果一切正常,请转到 IntelliJ 并从那里 import/open 项目 - select build.sbt.

当您从 IntelliJ 创建或导入 SBT 项目时,bootstrap 需要一段时间才能完成所有工作并下载编译器等。在完成之前不要管它。当需要编译编译器时,第一次编译也是如此:).

要设置示例项目,您可以发出这些 shell 命令:

mkdir untitled
cd untitled/

echo 'name := "untitled"

version := "0.1"

scalaVersion := "2.13.3"

libraryDependencies ++= Seq(
  "org.slf4j" % "slf4j-simple" % "1.7.26",
)
' > build.sbt

mkdir -p src/main/scala/

echo 'object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello World")
  }
}
' > src/main/scala/HelloWorld.scala

sbt run

如果这些步骤没有问题,则将 build.sbt 导入 IntelliJ。

我终于解决了这个问题。不幸的是,我不是 100% 确定最终是什么解决了它,但 禁用了一堆我没有使用的插件 似乎解决了我的问题。

我怀疑它可能是 Gradle 插件,因为我在 idea.log 文件中看到一些错误,但在 re-enabling 之后,用于测试所有内容的 Gradle 插件仍然存在正在工作所以不确定。