scala - 多项目设置 - 未检测到主类

标签 scala sbt

我有以下简单的项目设置

lazy val root = project.in(file(".")).aggregate(kalosrpc, kalosmodel)

lazy val kalosrpc = project.in(file("kalosrpc")).dependsOn(kalosmodel)

lazy val kalosmodel = project
  .settings(
    libraryDependencies ++= Seq(
      dependencies.slf4j,
      dependencies.slick,
      dependencies.mysql
    )
  )

lazy val kalosgen = project
  .settings(
    libraryDependencies ++= Seq(
      dependencies.slf4j,
      dependencies.slick,
      dependencies.slickCodeGen
    )
  )

具有以下目录结构

|__ api 
   |__ kalosgen
      |__ src
         |__ scala
            |__ Main.scala
   |__ kalosmodel
      |__ src
         |__ scala
            |__ Main.scala
   |__ kalosrpc
      |__ src
         |__ scala
            |__ Main.scala

我试图只运行 kalosgen 中的代码,但是当我打开 sbt 控制台并执行

project kalosgen
run

我明白了

[error] java.lang.RuntimeException: No main class detected.
[error]     at scala.sys.package$.error(package.scala:26)
[error] (Compile / bgRun) No main class detected.

这是kalosgen/src/scala/Main.scala的内容

import slick.codegen.SourceCodeGenerator

object Main extends App {
  val url = "hidden"
  val user = "hidden"
  val password = "hidden"
  val dbDriver = "com.mysql.jdbc.Driver"
  val profile = "slick.jdbc.MySQLProfile"
  SourceCodeGenerator.main(
    Array(
      profile,
      dbDriver,
      url,
      ".",
      "kalosmodel",
      user,
      password
    )
  )
}

据我所知,此设置是正确的,但它不会运行,并且谷歌搜索错误消息没有帮助。我尝试使用 class 而不是 object 并在 build.sbt 中指定主类,但没有任何效果。

最佳答案

路径中可能缺少

main 子目录。尝试将结构更改为

kalosgen/src/main/scala/Main.scala

而不是

kalosgen/src/scala/Main.scala

关于scala - 多项目设置 - 未检测到主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56809089/

相关文章:

java - AOP围绕外部库的重写方法?

java - ScalaFX/JavaFX : How can I change the overrun style of a ComboBox?

scala - 惰性 val 有什么作用?

scala - 运行时保留注释的 Scala 替代品是什么

scala - 更改 sbt 任务中的设置

scala - 如何从 Windows 工作站向我的私有(private) Artifactory 服务器提供 SBT 凭据?

scala - 如何将 PostgreSQL 卷附加到使用 SBT native 打包程序生成的 Docker 镜像?

scala - 为什么 scala.math.PartialOrdering.lteq 是抽象的,而不是根据 .tryCompare 定义的?

bash - 如何从 IntelliJ IDEA 的 bash 设置 SBT 以避免格式化字符被破坏?

scala - 无法使用 sbt.AutoPlugins 添加编译依赖项