在带有 SBT 程序集的子目录中查找主类的问题

Posted

技术标签:

【中文标题】在带有 SBT 程序集的子目录中查找主类的问题【英文标题】:Problems finding Main class in sub-directories w/SBT assembly 【发布时间】:2016-02-04 02:42:55 【问题描述】:

我正在尝试使用 SBT 程序集 (0.14.0) 创建我的 Scala 项目的胖 jar。

我的项目结构如下:

    >top
       > build.sbt
       > api
          > src
               > main
                     > scala
                             > name 
                                    > Boot.scala
        > other directories

我正在尝试将 Boot 设置为要在 jar 中运行的主要方法。

我尝试过使用:

baseDirectory in (Compile,run) := file("api")
scalaSource in run := baseDirectory.value / "api"
scalaSource in Compile := baseDirectory(_ / "api")
mainClass in assembly  := some("name.Boot")

jar 构建成功,但运行时收到错误:

错误:无法找到或加载主类名。启动

【问题讨论】:

【参考方案1】:

按照您发布的 sn-p,您可以尝试更改

mainClass in assembly := some("name.Boot")

mainClass in assembly := Some("name.Boot")

它不抱怨的原因是小写的some指的是something else。

【讨论】:

【参考方案2】:

mainClass 的文件路径无关紧要,只有 Scala/Java 中的命名空间。是你的主要对象

package name

object Boot 
  def main ...

?

【讨论】:

以上是关于在带有 SBT 程序集的子目录中查找主类的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用Maven对JAVA程序打包-带主类带依赖

使用Maven对JAVA程序打包-带主类带依赖

通过命令行运行非主类的spring boot应用

抑制 sbt-assembly 中的主类

未找到 SBT 主类“未”

如何在构建中设置主类?