expert expert - 1 year ago 167
Scala Question

how to set main class in SBT 0.13 project

Could you guys please explain to me how to set main class in SBT project ? I'm trying to use version 0.13.

My directory structure is very simple (unlike SBT's documentation). In the root folder I have

with following content

name := "sbt_test"

version := "1.0"

scalaVersion := "2.10.1-local"

autoScalaLibrary := false

scalaHome := Some(file("/Program Files (x86)/scala/"))

mainClass := Some("Hi")

libraryDependencies ++= Seq(
"org.scalatest" % "scalatest_2.10" % "2.0.M5b" % "test"

EclipseKeys.withSource := true

And I have subfolder
with single file
which contains following code

object Hi {
def main(args: Array[String]) = println("Hi!")

I'm able to compile it by calling
sbt compile
sbt run

The system cannot find the file C:\work\externals\sbt\bin\sbtconfig.txt.
[info] Loading project definition from C:\work\test_projects\sbt_test\project
[info] Set current project to sbt_test (in build file:/C:/work/test_projects/sbt_test/)
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 Apr 8, 2013 6:14:41 PM


I'm shocked that after reading SBT's documentation and 15 similar questions on StackOverflow I couldn't make SBT project run. It's basic functionality which should be brain-dead simple and clear in first 10 seconds of looking at SBT's web-site.


And I'd like to ask Typesafe employees to improve documentation of their product instead of downvoting questions of people who are investing significant time in switching to new platform.

Answer Source

You need to put your application's source in src/main/scala/, project/ is for build definition code.