Scala IDE Error: Main method not found in class 'hello'

Scala IDE Error: Main method not found in class 'hello'

我刚刚开始在 Scala IDE(Eclipse) 上进行 Scala 开发。我正在尝试创建一个新项目并编写一个示例 hello world 程序来启动它。这是我的示例程序:

object hello {
  def main(args: String) = {
    println("Hello World!");
  }
 }

我正在使用 Java 8. 我没有看到程序中有任何错误。但是,当我尝试 运行 程序时,出现如下错误:

Error: Main method not found in class hello, please define the main method as:
   public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application

我现在一头雾水。为什么要我用 Java 语法创建一个 main 函数?为什么当代码没有问题时它会抛出错误(据我所知)?我尝试搜索现有问题的答案,但 none 其中与 scala 开发有关。

如有任何帮助,我们将不胜感激。谢谢。

您的 main 必须采用字符串数组。目前需要一个字符串

来自scala官网:

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello, world!")
  }
}

https://www.scala-lang.org/documentation/getting-started.html

此外,请确保您在 Eclipse 中使用 "run as Scala application" 选项。

这可能对每个人都没有帮助,但我确实遇到了同样的问题,我清理了项目并且成功了!!!

在我的例子中(Intellij Ultimate 2018.1),我有一个与 main 方法的对象同名的测试:

  • src/main/scala/com/xx/xx/MyApp
  • src/test/scala/com/xx/xx/MyApp

当尝试催促 main...MyApp 失败,出现此问题中的异常。

刚刚将 src/test/scala/com/xx/xx/MyApp 重命名为 MyAppTest

您在测试中有 一个 class 具有相同的名称

检查您的测试文件夹是否不包含 object hello. 检查您的测试包是否有唯一的对象名称。 重命名后,问题必须解决

main 方法的实现方式没有区别。你可以这样做:

object hello {
  def main(args: String) = {
    println("Hello World!");
 }
}

或者像这样:

object hello extends App {
    println("Hello World!");
 }

```

在我的例子中,我有一个伴生对象和一个同名的 class,这在 Scala 中通常没问题,但似乎混淆了 Java。

将对象或 class 重命名为其他名称解决了问题。