Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 未检测到主类_Scala_Class_Sbt_Main_Runtimeexception - Fatal编程技术网

Scala 未检测到主类

Scala 未检测到主类,scala,class,sbt,main,runtimeexception,Scala,Class,Sbt,Main,Runtimeexception,问题是,当我打开“cmd.exe”并转到名为chesschallenge6的目录,输入“sbt”命令并在之后“run”时,它不起作用。我收到一条错误消息,说没有指定主类。我检查了主类名是否与其文件名相同,甚至尝试了“object ChessChallenge6 extends App”,但仍然不起作用。解决办法很简单,但我就是看不出来 └── _chesschallenge6 ├── _project ├── _target └── _src

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

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

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

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

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

如果您没有使用它们,您应该将它们从问题文本中删除,因为它们令人困惑。(如果要区分列表中的文件和目录,常用的约定是在目录名的末尾添加“/”,例如“
src/

在错误的目录中运行sbt
您必须在上面的
src
目录中运行
sbt
。在您问题的最新版本中,这将出现在
chesschallenge6
目录中。

我有一个确切的问题,问题是我使用的是
而不是
对象

例如,确保主类不是这样的:

class ChessChallenge6 {

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

}
相反,它应该是:

object ChessChallenge6 {

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

}

请注意,第一个单词是object而不是class

您可以分享一个可复制的示例吗?我从未分享过代码示例。我应该简单地使用github吗?如果将scala类移动到src/main/scala中会发生什么?您可以将代码添加到问题本身。所以一般来说可运行的JVM项目至少需要一个类来提供
公共静态void main
方法。。。我在_main中创建了一个名为scala的目录,然后将我的主类移动到那里,它不再显示“未检测到主类”错误。谢谢,我不用下划线。在我的问题中,这是我自己区分文件夹和文件的方法。别介意。只是无意中从某个地方抄来的。那就行了。请您将“ChessChallenge6.scala”的相关部分添加到您的问题中好吗?即使将主类移动到“scala”目录是解决方案,我也应该添加它们吗?另外,我编辑了问题中的目录结构,因此它显示了目前的实际情况。抱歉,现在一切都好了。为什么对象bro?
ChessChallenge6
是一个单实例对象:一个只有一个实例的类。我们只需要主类的一个实例,这是有道理的。单独定义一个类需要创建它的实例。而且,
Object
只创建一个单例,这意味着我们只需要一个单例。