comment définir la classe principale dans SBT 0.13 projet

Pourriez-vous les gars s'il vous plaît expliquez-moi comment définir la classe principale dans SBT projet ? Je suis en train d'utiliser la version 0.13.

Ma structure de répertoire est très simple (à la différence du TRIBUNAL de la documentation). Dans le dossier racine j'ai build.sbt avec le contenu suivant

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

Et j'ai sous-dossier project avec un seul fichier Hi.scala qui contient le code suivant

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

Je suis capable de le compiler en appelant sbt compile mais sbt run retourne

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
  • Votre expérience n'est pas typique. Avez-vous pensé que votre non-standard de Scala construire pourrait être une partie du problème?
  • Nope. Parce que je peux compiler. Aussi pour le bien de l'expérience, j'ai changé le réglage de laisser SBT obtenir compilateur Scala et renommé le nom de la classe dans mainClass. sbt run travaillé de toute façon 🙂 ce Qui indique que SBT simplement ignore le paramètre.
  • Pourquoi utilisez-vous SBT 0.13 (seule étape disponible) au lieu de la dernière version 0.12.3? Pourquoi n'utilisez-vous pas la structure de répertoires par défaut (sources d'aller dans src/main/scala)? Pourquoi n'utilisez-vous pas un défaut Scala version?
  • J'ai pris tout ce qui était plus tard sur SBT du site web. Structure de répertoire de Jeu standard Cadre du projet est différent. Je voulais à force de Jouer utiliser la dernière version de scala, au lieu de les forcer à 2.9.2. Pourriez vous s'il vous plaît upvote la question ?
  • Il vous manque quelques points importants: tout d'Abord, scala-sbt.org montre 0.12.3 comme le dernier (publié) version. Deuxièmement, la Scala version sbt en interne n'est pas liée à la Scala de version pour votre projet, sauf qu'il est utilisé par défaut si vous n'avez pas défini de différentes scalaVersion dans votre construction. La troisième, Jouer, comme beaucoup d'autres Scala bibliothèques, est compilé avec une version spécifique de la Scala et vous devez l'utiliser (ou binaire compatible mise à niveau). Quatrièmement, je suis exclusivement agissant en mon nom propre ici.
  • Les problèmes décrits dans la présente question n'étaient pas liées à la version alpha. Mais bien essayé.
  • projet de répertoire contient la définition de build, et non de votre projet classes, comme cela est expliqué dans scala-sbt.org/0.13.0/docs/Getting-Started/Full-Def.html

InformationsquelleAutor expert | 2013-04-09