I have a single file app Web.scala:
import org.jboss.netty.handler.codec.http.{HttpRequest, HttpResponse}
import com.twitter.finagle.builder.ServerBuilder
import com.twitter.finagle.http.{Http, Response}
import com.twitter.finagle.Service
import com.twitter.util.Future
import java.net.InetSocketAddress
import util.Properties
object Web {
def main(args: Array[String]) {
val port = Properties.envOrElse("PORT", "8080").toInt
println("Starting on port:"+port)
ServerBuilder()
.codec(Http())
.name("hello-server")
.bindTo(new InetSocketAddress(port))
.build(new Hello)
println("Started.")
}
}
class Hello extends Service[HttpRequest, HttpResponse] {
def apply(req: HttpRequest): Future[HttpResponse] = {
val response = Response()
response.setStatusCode(200)
response.setContentString("Hello World...\n")
Future(response)
}
}
With sbt, if I do:
> run
java.lang.RuntimeException: No main class detected.
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) No main class detected.
[error] Total time: 0 s, completed Mar 26, 2013 8:39:24 PM
> run last compile:run
java.lang.RuntimeException: No main class detected.
at scala.sys.package$.error(package.scala:27)
[trace] Stack trace suppressed: run last compile:run for the full output.
[error] (compile:run) No main class detected.
[error] Total time: 0 s, completed Mar 26, 2013 8:39:28 PM
How can I get this to run the main class? This worked yesterday for me but I just upgraded sbt.
>sbt launcher version 0.12.2
>Scala code runner version 2.9.2 -- Copyright 2002-2011, LAMP/EPFL