Я использую SBT (в IntelliJ IDEA) для создания простого проекта Scala.
Я хотел бы знать, как проще всего создать файл Uber JAR (он же Fat JAR, Super JAR).
В настоящее время я использую SBT, но когда я отправляю свой JAR-файл в Apache Spark, я получаю следующую ошибку:
Исключение в потоке "main" java.lang.SecurityException: недействительный дайджест файла подписи для основных атрибутов манифеста
Или эта ошибка во время компиляции:
java.lang.RuntimeException: deduplicate: различное содержимое файла, обнаруженное в следующем:
PATH \ DEPENDENCY.jar: META-INF / DEPENDENCIES
PATH \ DEPENDENCY.jar: META-INF / MANIFEST.MF
Это выглядит как это происходит потому , что некоторые из моих зависимостей включают файлы сигнатур (META-INF) , который должен быть удален в конечном файле JAR Uber.
Я пробовал использовать плагин sbt-assembly вот так:
/project/assembly.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.12.0")
/project/plugins.sbt
logLevel := Level.Warn
/build.sbt
lazy val commonSettings = Seq(
name := "Spark-Test"
version := "1.0"
scalaVersion := "2.11.4"
)
lazy val app = (project in file("app")).
settings(commonSettings: _*).
settings(
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.2.0",
"org.apache.spark" %% "spark-streaming" % "1.2.0",
"org.apache.spark" % "spark-streaming-twitter_2.10" % "1.2.0"
)
)
Когда я нажимаю « Создать артефакт ... » в IntelliJ IDEA, я получаю файл JAR. Но я получаю ту же ошибку ...
Я новичок в SBT и не очень экспериментировал с IntelliJ IDE.
Спасибо.
META-INF
файлы - одно сообщение в блоге, которое может помочь: janschulte.wordpress.com/2014/03/20/…