【问题标题】:Scala IDE Error: Main method not found in class 'hello'Scala IDE 错误:在类 'hello' 中找不到主要方法
【发布时间】:2017-10-26 14:26:37
【问题描述】:

我刚刚开始在 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 函数?当代码没有问题时为什么会抛出错误(据我所知)?我尝试搜索现有问题的答案,但没有一个是关于 scala 开发的。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: java eclipse scala ide scala-ide


    【解决方案1】:

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

    来自scala的官方网站:

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

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

    另外,请确保您在 Eclipse 中使用“作为 Scala 应用程序运行”选项。

    【讨论】:

    • 感谢您的回答。试过了,还是一样的错误。
    • 你在使用“作为 Scala 应用程序运行”吗?
    • 是的,我尝试作为 Scala 应用程序运行,它现在正在运行。非常感谢! :)
    • 我遇到了同样的问题,但是它不适用于这些选项中的任何一个。 Eclipse IDE 仍然在项目级别显示红十字标记,但在任何文件上都没有。我不知道出了什么问题。我试图定义主方法,如 def main(args:Array[String]): Unit = { println("Helo") } 和 def main(args:Array[String]) { println("Hello") }跨度>
    【解决方案2】:

    您有在测试中具有相同名称的类

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

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

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

    或者像这样:

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

    ```

    【讨论】:

    • 你是第一个例子不会运行。它与原始问题存在相同的问题,可以通过遵循已接受答案的建议来解决。
    • 这实际上解决了我的问题。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      在我的情况下(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

      【讨论】:

        【解决方案5】:

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

        将对象或类重命名为不同的名称可以解决问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-21
          • 2018-10-19
          • 2016-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多