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