Настройка нескольких проектов - основной класс не обнаружен - PullRequest
4 голосов
/ 28 июня 2019

У меня есть следующие простые настройки проекта

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, но ничего не работает.

1 Ответ

4 голосов
/ 28 июня 2019
Подкаталог

main может отсутствовать в пути. Попробуйте изменить структуру на

kalosgen/src/main/scala/Main.scala

вместо

kalosgen/src/scala/Main.scala
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...