我有一个包含程序集插件的build.sbt文件。直到最近的构建,Main-Class属性被包含在组装的远程jar中,但突然之间,情况就不再如此了。为什么生成的清单中没有Main-Class属性?
当我尝试运行jar,我得到了独特的:
no main manifest attribute, in ./target/scala-2.10/foo-0.3.0-SNAPSHOT.jar
但使用运行从SBT控制台,工作正常。
我的build.sbt目前看起来像这样(mainClass在程序集中添加,试图强制指示程序集插件它确实应该包含,虽然我注意到在插件源代码中,它看起来像是检查一个无论如何指定为运行)。
import AssemblyKeys._
name := "foo"
version := "0.3.0-SNAPSHOT"
organization := "com.mycompany.myproduct"
scalaVersion := "2.10.4"
mainClass in (Compile, run) := Some("ProcessRelogger")
mainClass in assembly := Some("ProcessRelogger")
assemblySettings
libraryDependencies ++= Seq(
"org.scalatest" % "scalatest_2.10" % "1.9.2" % "test",
"ch.qos.logback" % "logback-classic" % "1.0.9",
"com.typesafe.akka" %% "akka-actor" % "2.2.4",
"joda-time" % "joda-time" % "2.3",
"com.rabbitmq" % "amqp-client" % "3.3.4",
"org.scalaz" % "scalaz-core_2.10" % "7.0.6",
"com.typesafe.slick" %% "slick" % "2.0.2",
"postgresql" % "postgresql" % "9.1-901.jdbc4",
"com.escalatesoft.subcut" %% "subcut" % "2.0"
)
当我解压缩jar文件,并检查META-INF/MANIFEST.MF时,没有包含Main-Class:属性。
愚蠢的问题 - Processrelogger中是否有多个主电源? – Azzie 2014-10-07 17:38:08
我的第一个猜测是尝试FQDN而不是仅仅是类名。 – lgasior 2014-10-07 20:22:13
sbt-assembly的版本是什么? – 2014-10-08 07:07:51