scala sbt assembly “no main manifest attribute”

半腔热情 提交于 2019-12-19 06:03:28

问题


I use assembly plugin in sbt to assemble my project. But errors happen when run by "java -jar xx.jar" -

"no main manifest attribute".

I think it's because there are two files in my src/main/scala/ directory and each with an object extending Application which means there are two main entry in the project. But I need two applications, one is the server and the other is the test client.

How to handle this two-main-entry problem in scala sbt. Thanks in advance.


回答1:


In your SBT build file, define the main class.

If you are using build.sbt, then that would be:

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

If you are using Build.scala then you could do something like:

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



回答2:


You can use -cp instead of -jar

java -cp xx.jar com.domain.AnyClassName




回答3:


I had this issue while testing out Lagom.

To deploy in Lagom you can just access the -impl project and run this:

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

This will generate a zip with the executable inside.



来源:https://stackoverflow.com/questions/27858758/scala-sbt-assembly-no-main-manifest-attribute

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!