如何编译Scala Hello World应用程序

如何编译Scala Hello World应用程序,scala,scalac,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:

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

因为,您不应该定义
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
}

在编译.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")

    }
}

谢谢,成功了。我从网页上得到的坏代码是。该代码是否仅适用于早期版本的Scala?获取一个只是用来测试安装的简单示例时遇到这么多麻烦,这有点令人沮丧。@StevenEdmunds我在该页面中没有看到您的初始代码。要么您不扩展
应用程序
,而具有
功能,要么您扩展
应用程序
,而不具有
功能。这两种情况都在您参考的页面中进行了说明。是的,您再次说得对,我将对象的内容粘贴到EclipseIDE创建的scala应用程序模板中,但没有注意到其中的差异。我觉得我在做诸如设置和配置环境之类的事情时变得太不耐烦和沮丧,我开始变得马虎和忽视事情。感谢您花时间为我澄清这一切。bash-4.2$spark-submit-2.2 sequential-assembly-1.0.0-SNAPHOST.jar你好世界bash-4.2$