Reputation: 39
Why does
println("Hello, " + args(0) + "!")
work when I run scala nomain.scala but
object HelloWorld {
def main(args: List[String]) {
println("Hello, " + args(0) + "!")
}
}
Gives me the error:
java.lang.NoSuchMethodException: Main.main([Ljava.lang.String;)
at java.lang.Class.getMethod(Class.java:1786)
at scala.reflect.internal.util.ScalaClassLoader.run(ScalaClassLoader.scala:94)
at scala.reflect.internal.util.ScalaClassLoader.run$(ScalaClassLoader.scala:90)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:129)
at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:22)
at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:21)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:28)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
at scala.tools.nsc.ScriptRunner.runCompiled(ScriptRunner.scala:170)
at scala.tools.nsc.ScriptRunner.$anonfun$runScript$1(ScriptRunner.scala:187)
at scala.tools.nsc.ScriptRunner.$anonfun$runScript$1$adapted(ScriptRunner.scala:187)
at scala.tools.nsc.ScriptRunner.$anonfun$withCompiledScript$2(ScriptRunner.scala:156)
at scala.tools.nsc.ScriptRunner.runScript(ScriptRunner.scala:124)
at scala.tools.nsc.ScriptRunner.runScriptAndCatch(ScriptRunner.scala:200)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:63)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:88)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:99)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:104)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
when I run scala helloworld.scala
I tried adding some statements like if (args.size > 0)
but that also gives me errors. I am wondering what I am doing wrong here. I am wondering how I would check to see if the list has something in it and also how to directly print args.
Upvotes: 2
Views: 3630
Reputation: 1397
You should do something like this to check if the first argument exists:
object HelloWorld {
def main(args: Array[String]) {
if(args.headOption.isDefined) {
println("Hello, " + args(0) + "!")
} else {
println("There is no first argument")
}
}
}
Upvotes: 1
Reputation: 51658
def main(args: Array[String]): Unit = ???
should be instead of
def main(args: List[String]): Unit = ???
Upvotes: 1