【问题标题】:scala sbt assembly "no main manifest attribute"scala sbt 程序集“没有主要清单属性”
【发布时间】:2015-03-07 16:01:14
【问题描述】:

我在 sbt 中使用组装插件来组装我的项目。但是通过“java -jar xx.jar”运行时会发生错误 -

“没有主要清单属性”。

我认为这是因为我的src/main/scala/ 目录中有两个文件,每个文件都有一个扩展Application 的对象,这意味着项目中有两个主要条目。但是我需要两个应用程序,一个是服务器,另一个是测试客户端。

如何在 scala sbt 中处理 two-main-entry 问题。提前致谢。

【问题讨论】:

    标签: scala sbt sbt-assembly


    【解决方案1】:

    在您的 SBT 构建文件中,定义主类。

    如果你使用的是 build.sbt,那么就是:

    mainClass in assembly := Some("com.domain.Main")
    

    如果您使用的是 Build.scala,那么您可以执行以下操作:

    lazy val app = (project in file("app")).
      settings(assemblySettings: _*)
      settings(mainClass in assembly := Some("com.domain.Main"))
    

    【讨论】:

    • @polkovnikov.ph 你确定你已经加载了 sbt-assembly 插件吗?
    【解决方案2】:

    您可以使用-cp 代替-jar

    java -cp xx.jar com.domain.AnyClassName

    【讨论】:

      【解决方案3】:

      我在测试 Lagom 时遇到了这个问题。

      要在 Lagom 中部署,您只需访问 -impl 项目并运行以下代码:

      ./sbt "project <your-project>-impl" dist
      

      这将生成一个包含可执行文件的 zip。

      【讨论】:

        猜你喜欢
        • 2018-04-01
        • 1970-01-01
        • 2019-07-19
        • 2015-12-10
        • 2015-03-14
        • 2019-05-18
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        相关资源
        最近更新 更多