scala sbt 程序集 "no main manifest attribute"

scala sbt assembly "no main manifest attribute"

我在 sbt 中使用汇编插件 assemble 我的项目。但是当 运行 by "java -jar xx.jar" -

时会发生错误

"no main manifest attribute".

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

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

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

如果您使用的是 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"))

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

要在 Lagom 中部署,您只需访问 -impl 项目和 运行 这个:

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

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

您可以使用 -cp 而不是 -jar

java -cp xx.jar com.domain.AnyClassName