Scala 的 build.sbt 不被 IntelliJ 识别

标签 scala intellij-idea ide sbt

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

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

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

enter image description here

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

enter image description here

我无法将库导入到我的类文件中,并且项目将无法构建:

enter image description here

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

最佳答案

您可以先尝试在某个目录中手动创建一个SBT项目。单独 build.sbt 就足够了。

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

如果一切正常,请转到 IntelliJ 并从那里导入/打开项目 - 选择 build.sbt

当您从 IntelliJ 创建或导入 SBT 项目时,需要一段时间来引导所有内容并下载编译器等。只需将其保留,直到完成。当编译器需要编译时,第一次编译也是如此:)。

要设置示例项目,您可以发出以下 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。

关于Scala 的 build.sbt 不被 IntelliJ 识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64637907/

相关文章:

scala - 如何使用 Scala 和 JUnit 4 设置预期异常

scala - 如何抑制 MaxPermSize 警告?

java - Java中灰线没有解释如何查找问题?

java - 有没有好的 J2ME IDE?

visual-studio-2010 - 升级到 Visual Studio 2010 时出现问题

Scala:通过比较简化案例

scala - 马丁·奥德斯基: Working hard to keep it simple

java - (另一个)Neo4j 插件未显示在扩展中

java - 其他模块中 jar 依赖项的 IntelliJ NoClassDefFoundError

java - intelliJ 中的 Maven 无法读取 Artifact 描述符 - 启用快照更新