【问题标题】:Multi project setup - No main class detected多项目设置 - 未检测到主类
【发布时间】:2019-11-10 12:59:22
【问题描述】:

我有以下简单的项目设置

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 中指定主类,但没有任何效果。

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    main 子目录可能从路径中丢失。尝试将结构更改为

    kalosgen/src/main/scala/Main.scala
    

    而不是

    kalosgen/src/scala/Main.scala
    

    【讨论】:

      猜你喜欢
      • 2017-11-16
      • 2017-09-23
      • 1970-01-01
      • 2019-09-24
      • 2018-02-21
      • 1970-01-01
      • 2014-01-13
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多