如何在SBT 0.13项目中设置主类

请你们向我解释如何在SBT项目中设置主要课程? 我正在尝试使用0.13版本。

我的目录结构非常简单(与SBT的文档不同)。 在根文件夹中,我有以下内容的build.sbt

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

我有包含以下代码的单个文件Hi.scala子文件夹project

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

我可以通过调用sbt compile来编译它,但是sbt run返回

The system cannot find the file C:workexternalssbtbinsbtconfig.txt.
[info] Loading project definition from C:worktest_projectssbt_testproject
[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。

我感到震惊的是,在阅读SBT的文档和StackOverflow的15个类似问题后,我无法运行SBT项目。 这是基本的功能,它应该在观看SBT网站的前10秒内简单明了地清除。

PS2。

我希望Typesafe的员工改进他们产品的文档,而不是降低那些投入大量时间在切换到新平台上的人的问题。


您需要将应用程序的源代码放在src/main/scala/project/用于构建定义代码。


尝试使用一个对象,并从应用程序扩展它,而不是使用类

object Main extends App {
  println("Hello from main scala object")
}

因为你需要运行主要的方法既不主要的类


以下是如何指定主类

mainClass in (Compile,run) := Some("my.fully.qualified.MainClassName")

链接地址: http://www.djcxy.com/p/42571.html

上一篇: how to set main class in SBT 0.13 project

下一篇: SBT task to copy property file from project folder to webapp