Czy możecie wyjaśnić mi, jak ustawić główną klasę w projekcie SBT? Próbuję użyć wersji 0.13.jak ustawić główną klasę w projekcie SBT 0.13
Moja struktura katalogów jest bardzo prosta (w przeciwieństwie do dokumentacji SBT). W folderze głównym mam build.sbt
o następującej treści
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
I mam podfolder project
z pojedynczego pliku Hi.scala
który zawiera następujący kod
object Hi {
def main(args: Array[String]) = println("Hi!")
}
jestem w stanie skompilować go nazywając sbt compile
ale sbt run
powroty
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
PS.
Jestem zszokowany, że po przeczytaniu dokumentacji SBT i 15 podobnych pytań na temat StackOverflow nie mogłem uruchomić projektu SBT. Jest to podstawowa funkcjonalność, która powinna być prosta i przejrzysta w pierwszych 10 sekundach oglądania strony internetowej SBT.
PS2.
Chciałbym poprosić pracowników Typesafe o udoskonalenie dokumentacji dotyczącej ich produktów, zamiast zgłaszać pytania osobom, które poświęcają znaczną ilość czasu na przejście na nową platformę.
Twoje doświadczenie nie jest typowe. Czy zastanawiałeś się, czy twoja niestandardowa kompilacja Scali może być częścią problemu? –
@RandallSchulz Nie, ponieważ mogę się skompilować, także ze względu na eksperyment zmieniłem ustawienie, aby pozwolić SBT pobiera kompilator Scala i zmienia nazwę na nazwę klasy w 'mainClass'.' Sbt run' tak czy tak działa :) Co oznacza, że SBT po prostu ignoruje ustawienie. – expert
Dlaczego używasz SBT 0.13 (tylko kamień milowy dostępny) zamiast najnowszego wydania 0.12.3? Dlaczego nie używasz domyślnej struktury katalogów (źródła przechodzą w 'src/main/scala')? Dlaczego nie używasz domyślnej wersji Scala? –