如何编译Scala Hello World应用程序

时间:2014-07-05 04:30:41

标签: scala scalac

我是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变量中。如果有人能告诉我我做错了什么,或者给我一个关于我可能找到答案的建议,我会很感激。

2 个答案:

答案 0 :(得分:16)

App extends DelayedInit以来,您不应该定义main函数

这应该足够了:

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

编译器为您创建此函数,并将其传递给delayedInit(x: => Unit)方法(注意call-by-name in the parameter)。

编译器将发出:

object Main extends DelayedInit {
  def delayedInit(x: => Unit = { println("Hello, worl!") }) = // impl is left for us to fill in
}

答案 1 :(得分: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")

    }
}