即使在编译之后也无法运行scala程序

时间:2015-07-04 10:40:38

标签: linux scala

这是我的scala代码:

object world
{
    println("this is vaibhav")
}

我可以使用scalac编译它。

scalac object.scala

生成这两个文件:

world.class,world$.class

但是当我运行时:

scala world

它给出了以下信息:

java.lang.NoSuchMethodException: world.main([Ljava.lang.String;)
    at java.lang.Class.getMethod(Class.java:1670)
    at   scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:74)
    at         scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:33)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:40)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:56)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:80)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

3 个答案:

答案 0 :(得分:2)

Scala的几种不同方式。一个使用对象的主体:

object HelloWorld extends App {
  println("Hello World: " + (args mkString ", "))
}

请注意那里的extends App。请参阅documentation

另一个使用对象的main字段:

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

有些documentation

答案 1 :(得分:1)

由于Java程序需要执行public static final main(String[] args) {}方法,因此Scala需要在对象中使用def main(args: Array[String]) {}

答案 2 :(得分:0)

您不太可能直接使用Scala编译器(scalac)来构建和管理任何真正的Scala项目。如果您从Scala开始,我建议如下:

  1. 使用sbt等构建工具来管理您的dependecies和版本。
  2. 使用IDE(IntelliJ / Eclipse