在IntelliJ Idea中编译和运行Scala项目时出现问题

时间:2018-10-21 16:00:54

标签: scala intellij-idea sbt

我已经使用Scala插件安装了最新的IntelliJ Idea版本。我已经用IDE创建了一个SBT Scala项目。 不幸的是,我什至无法编译或运行最简单的“ Hello World”示例。

object Main {
    def main(args: Array[String]): Unit ={
        val x: Int = 5
        println("Hello Scala!")
        println(x)
    }
}

如果我尝试运行它,它说“错误:找不到主类Main”。 重建项目无济于事。

但是,如果我运行“ sbt”终端程序并执行“ run”,则一切运行正常。甚至,它还会编译必要的类文件,以便IntelliJ Idea可以在此步骤之后运行它。 但是,每当我更改代码中的某些内容并尝试从Idea重建它时,它都会像以前一样失败。

编辑:在Eclipse中一切正常。

更新

如果我尝试从sbt外壳执行“编译”,然后在IDE中运行“运行”,那么它将起作用。但是,在执行“生成”或“重建项目”时不会这样做。有时候,但不幸的是,并非总是如此,因为它能够重现它,这将使我抛出“无法初始化类sbt.internal.io.Milli $”的异常。

第二次更新:

我进一步简化了任务。现在,我有类似以下屏幕截图的内容:

Screenshot IntelliJ IDEA

第3次更新:

我的部署中有两个错误。其中之一是,如前所述,存在一些程序包定义问题。所有源代码都应依赖src / main / scala,但这还不够。为了将SBT结构用于建筑,我不得不去 文件->设置->构建,执行,部署->构建工具-> sbt 并选中“使用自动导入”和“使用sbt shell进行构建和导入”。

之后,一切正常。结局!

非常感谢大家的有用输入!

2 个答案:

答案 0 :(得分:1)

您的screenshot Runner上的包装错误。它写为package main.scala。 如果Runner.scalasrc/main/scala/way/to/my/package中,则包声明应为package way.to.my.package(如果它仅在src/main/scala中,则不应有行package ...)。

如果仍然有必要,您可以尝试(如果之前尝试过的事情没有帮助,则从应该首先尝试的内容到最后应该尝试的内容)

  • sbt clean
  • 将项目重新导入到IntelliJ IDEA
  • File-> Invalidate Caches / Restart ...
  • 删除项目文件夹的.idea子文件夹

答案 1 :(得分:0)

您是否尝试过“对象主要”附近的绿色箭头? 这应该启动程序。

Screensht from IntelliJ Idea