我遇到了一个问题,即无法使用 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 工具窗口(右侧)拾取的,但不是由我的项目(左侧)拾取的
当我将鼠标悬停在 build.sbt 文件中的 libraryDependencies
上时,它似乎无法识别 sbt 语法:
我无法将库导入到我的类文件中,并且项目将无法构建:
我是 Scala 新手,我只是想创建一个基本的 hello world 项目,但我似乎无法解决这个令人沮丧的问题。
最佳答案
您可以先尝试在某个目录中手动创建一个SBT项目。单独 build.sbt
就足够了。
然后在该目录中运行 sbt
以查看 SBT shell 是否正常工作。使用一些 helloworld 应用程序尝试一些命令,例如 sbtcompile
、sbtrun
。当您创建 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/