首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SBT run语句显示:未检测到主类。

SBT run语句显示:未检测到主类。
EN

Stack Overflow用户
提问于 2020-05-23 22:03:58
回答 1查看 1.8K关注 0票数 0

我已经创建了一个web应用程序,当我尝试使用sbt run运行时,它显示:

代码语言:javascript
复制
sbt run    
[warn] No sbt.version set in project/build.properties, base directory: /home/developer/scala/user-svc/target/scala-2.13
[info] Loading global plugins from /home/developer/.sbt/1.0/plugins
[info] Set current project to scala-2-13 (in build file:/home/developer/scala/user-svc/target/scala-2.13/)
[error] java.lang.RuntimeException: No main class detected.
[error]         at scala.sys.package$.error(package.scala:30)
[error] stack trace is suppressed; run last Compile / bgRun for the full output
[error] (Compile / bgRun) No main class detected.
[error] Total time: 0 s, completed May 23, 2020, 11:44:32 PM  

build.sbt的内容如下:

代码语言:javascript
复制
val Http4sVersion = "0.21.4"
val CirceVersion = "0.13.0"
val Specs2Version = "4.9.3"
val LogbackVersion = "1.2.3"

lazy val root = (project in file("."))
  .settings(
    organization := "io.example",
    name := "user-svc",
    version := "0.0.1-SNAPSHOT",
    scalaVersion := "2.13.2",
    libraryDependencies ++= Seq(
      "org.http4s" %% "http4s-jetty" % Http4sVersion,
      "org.http4s" %% "http4s-jetty-client" % Http4sVersion,
      "org.http4s" %% "http4s-circe" % Http4sVersion,
      "org.http4s" %% "http4s-dsl" % Http4sVersion,
      "io.circe" %% "circe-generic" % CirceVersion,
      "org.specs2" %% "specs2-core" % Specs2Version % "test",
      "ch.qos.logback" % "logback-classic" % LogbackVersion
    ),
    addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.10.3"),
    addCompilerPlugin("com.olegpy" %% "better-monadic-for" % "0.3.1"),
  )

scalacOptions ++= Seq(
  "-deprecation",
  "-encoding", "UTF-8",
  "-language:higherKinds",
  "-language:postfixOps",
  "-feature",
  "-Xfatal-warnings",
)

文件夹结构应该是正确的:

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-23 22:20:20

您没有主类,而是定义了程序的入口点。在JVM 你必须要有上至少有一个类定义

代码语言:javascript
复制
public static void main(args: String[])

在Scala的例子中,这意味着

代码语言:javascript
复制
object Main {
  def main(args: Array[String]): Unit = {
    ...
  }
}

如果确实有一个这样的类,sbt可以检测到它,如果有更多的类,则必须告诉sbt使用哪一个类:

代码语言:javascript
复制
mainClass := Some("name.of.my.Main")

以便调用run。如果您运行JAR,则可以使用manifest.mf指定该类或显式传递该类。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61979156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档