I‘m learning Scala by the book Programming in Scala. When I try to run the code given in the book, it gives me the following error:
Exception in thread "main" java.lang.RuntimeException: Cannot figure out how to run target: File2
at scala.sys.package$.error(package.scala:27)
at scala.tools.nsc.GenericRunnerCommand.scala$tools$nsc$GenericRunnerCommand$$guessHowToRun(GenericRunnerCommand.scala:38)
at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
at scala.Option.getOrElse(Option.scala:108)
at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:48)
at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:17)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:33)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
How do I solve this?
Here’s my code:
object Files2 {
def filesHere = (new java.io.File(".")).listFiles
def filesMatching(query: String, matcher: (String, String) => Boolean) = {
for (file <- filesHere; if matcher(file.getName, query))
yield file
}
def filesEnding(query: String) = filesMatching(query, _.endsWith(_))
def filesContaining(query: String) = filesMatching(query, _.contains(_))
def filesRegex(query: String) = filesMatching(query, _.matches(_))
def main(args: Array[String]) {
println("filesEnding(\"scala\").toList [" + filesEnding("scala").toList + "]")
println("filesContaining(\"Files1\").toList [" + filesContaining("Files1").toList + "]")
println("filesRegex(\".*Re.ex.*\").toList [" + filesRegex(".*Re.ex.*").toList + "]")
}
}
I just pasted your code into a file called
test.scalaand then ran it withscala test.scalaand it worked fine.