【发布时间】:2020-01-09 19:23:56
【问题描述】:
我只是想用 SBT 在 Intellij 上的 Scala 中执行一个简单的 Hello World 应用程序,但即使这样......它似乎也太难了。
我按照这里的说明进行操作:https://www.cloudera.com/tutorials/setting-up-a-spark-development-environment-with-scala/.html
我曾经使用 Eclipse 和 Maven...我在 Intellij 和 SBT 上工作,所以我尽力而为,但我有点迷茫。这是我所做的:
- 我安装了 Intellij,SBT。
- 我通过设置 File > Settings > Build, Execution, Deployment > Build tools > sbt > Launcher 在 Intellij 中配置了 SBT 启动器
- 使用 Java 1.8、SBT 1.3、Scala 2.13 创建新项目
- 在这一步我无法创建 Scala 类,但我注意到如果我“重新导入 sbt 项目”,那么 scala 类将出现在要创建的新元素列表中。
- 使用 main 方法创建对象:
object HelloScala {
def main(args: Array[String]): Unit = {
println("Hello world!")
}
}
当我尝试执行该 main 时,会导致以下错误:
错误:scalac:Scala SDK sbt 中 Scala 编译器类路径中的多个“scala-library*.jar”文件(scala-library-2.13.0.jar、scala-library-2.13.0.jar):org.scala -lang:scala-library:2.13.0:jar
我的 build.sbt :
name := "HelloScala"
version := "0.1"
scalaVersion := "2.13.0"
我在 File > Project Structure > Libraries > Compiler classpath 中检查了 Compiler 类路径:
file:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar
file:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0/scala-compiler-2.13.0.jar
file:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.0/scala-library-2.13.0.jar
file:///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.0/scala-reflect-2.13.0.jar
我试图删除目标目录,使缓存无效,通过删除它重新生成.idea文件夹并让intellij重新创建它,我从项目结构中的其他scala-library.jar中搜索。我什么都没找到……
真的...我不明白为什么 scala-library 被引用了两次。
如果我将 scala 版本从 2.13.0 更改为 2.11.0,同样的问题:
错误:scalac:Scala SDK sbt 中 Scala 编译器类路径中的多个“scala-library*.jar”文件(scala-library-2.11.0.jar、scala-library-2.11.0.jar):org.scala -lang:scala-library:2.11.0:jar
但是!如果我在 build.sbt 中评论 scala 版本:
name := "HelloScala"
version := "0.1"
//scalaVersion := "2.11.0"
然后如果我清除目标目录,重新导入 sbt 项目并尝试执行,它可以工作!在目标目录中,我有一个新的 scala-2.12 文件夹......它到底是从哪里来的?!
有关信息,我使用的是 Windows 10、Intellij 2019.2、JDK 1.8、SBT 13
非常感谢任何帮助!
【问题讨论】:
-
这是 IntelliJ 的一些奇怪问题。在过去的 1 周里,我也见过几次本应该可以正常工作的项目。它似乎是随机出现的,并且在从 2.12.9 -> 2.12.8 -> 2.12.7 -> 2.12.8 等随机切换 scala 版本几次后通常会消失。
-
你能在 IntelliJ 中从 sbt shell 编译/运行你的应用程序吗:
compile,run而不是 Ctrl+Shift+F9/Ctrl+Shift+F10? (当您将项目导入 IntelliJ 时,有复选框“使用 sbt shell:用于导入,用于构建”,这会将 Ctrl+Shift+F9/Ctrl+Shift+F10 重定向到 sbt shell。) -
这个错误在 IntelliJ Scala 插件的问题跟踪器上有一个未解决的问题:youtrack.jetbrains.com/issue/SCL-16208
-
IntelliJ Scala 插件已经更新,新版本(2019.2.28)修复了这个bug。
标签: scala intellij-idea sbt