10

我是 Scala 的新手,以前从未在其中编写或编译过程序。我试图简单地运行以下 Hello World 示例,我已将其保存在文件名 scalaApp.scala 中

object scalaApp extends App {
    def main(args: Array[String]) {
      println("Hello, world!")
    }
}

当我进入文件目录中的终端并键入“scalac scalaApp.scala”时,我收到以下错误消息:

scalaApp.scala:4: error: overriding method main in trait App of type (args:    Array[String])Unit;
 method main needs `override' modifier
    def main(args: Array[String]) {
        ^
one error found

我以为我已经按照所有说明在我的计算机上正确安装了 Scala 2.10.3,但我不知道如何测试它,因为我什至无法编译这个简单的程序。如果我在终端中输入“scala”,我会得到一个 scala 提示符,我可以在该提示符上运行“1 + 1”之类的命令。我不确定这显示了多少。我已将 SCALA_HOME 变量添加到 ~/.profile 中,并将 SCALA_HOME 添加到 ~/.profile 中的 PATH 变量中。如果有人能告诉我我做错了什么,或者给我一个关于在哪里可以找到答案的建议,我将不胜感激。

4

2 回答 2

20

由于AppextendsDelayedInit,你不应该定义一个main函数

这应该足够了:

object scalaApp extends App {
     println("Hello, world!")
}

编译器为您创建此函数,并将其传递给delayedInit(x: => Unit)方法(注意参数中的按名称调用)。

编译器将发出:

object Main extends DelayedInit {
  def delayedInit(x: => Unit = { println("Hello, worl!") }) = // impl is left for us to fill in
}
于 2014-07-05T04:43:34.963 回答
0

在编译 .jar 文件时,我遇到了错误。

spark-submit-2.2 sequential-assembly-1.0.0-SNAPHOST.jar
Error: No main class set in JAR; please specify one with --class

然后我将我的代码附加到

object getdata{

    def main(args: Array[String])={
        println("Hello World")

    }
}
于 2017-08-31T16:47:11.003 回答