未检测到主要 class

No main class detected

问题是当我打开 "cmd.exe" 并进入名为 chesschallenge6 的目录输入 "sbt" 命令和 "run" 之后它不起作用。我收到一条错误消息,指出没有指定 main class。我检查了主 class 名称是否与其文件名相同,甚至尝试了 "object ChessChallenge6 extends App" 但它仍然没有用。解决方案很简单,但我就是看不到。

└── _chesschallenge6
    ├── _project
    ├── _target
    └── _src      
        ├── _test
        └── _main
            ├── _algorithm
            ├── _model
            └── ChessChallenge6.scala

你的问题有点不清楚。以下是我对错误的最佳猜测:

目录结构错误

请确保您的 scala 文件位于“src/main/scala/ChessChallenge6.scala”中,相对于您 运行 sbt.

所在的目录

我不确定您是否在目录名称中使用下划线,或者这是您仅在问题文本中使用的某种格式。如果您使用下划线,则需要将其删除(或配置 sbt 以在非标准目录中查找您的源代码)。

如果您不使用它们,则应将它们从问题文本中删除,因为它们会造成混淆。 (如果要区分列表中的文件和目录,通常的惯例是在目录名称的末尾添加“/”,例如“src/”。)

http://www.scala-sbt.org/0.13/docs/Directories.html

运行 sbt 在错误的目录中

您必须运行 sbtsrc 上面的目录中。在你的问题的最新版本中,那将在 chesschallenge6 目录中。

我确实遇到了这个问题,问题是我使用的是 class 而不是 object

例如,确保你的主要 class 不是这样的:

class ChessChallenge6 {

  def main(args: Array[String]): Unit = {
    println("hello")
  }

}

相反,它应该是:

object ChessChallenge6 {

  def main(args: Array[String]): Unit = {
    println("hello")
  }

}

注意第一个词是 object 而不是 class.