ฉันใช้ SBT (ภายใน IntelliJ IDEA) เพื่อสร้างโครงการ Scala อย่างง่าย
ฉันอยากทราบวิธีที่ง่ายที่สุดในการสร้างไฟล์Uber JAR (aka Fat JAR, Super JAR)
ฉันกำลังใช้ SBT แต่เมื่อฉันส่งไฟล์ JAR ไปยังApache Sparkฉันได้รับข้อผิดพลาดต่อไปนี้:
ข้อยกเว้นในเธรด "main" java.lang.SecurityException: การย่อยไฟล์ลายเซ็นไม่ถูกต้องสำหรับแอตทริบิวต์หลักของ Manifest
หรือเกิดข้อผิดพลาดระหว่างเวลาคอมไพล์:
java.lang.RuntimeException: ขจัดข้อมูลซ้ำซ้อน: พบเนื้อหาไฟล์ที่แตกต่างกันต่อไปนี้:
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"
)
)
เมื่อฉันคลิก " Build Artifact ... " ใน IntelliJ IDEA ฉันจะได้ไฟล์ JAR แต่ฉันจบลงด้วยข้อผิดพลาดเดียวกัน ...
ฉันยังใหม่กับ SBT และไม่ได้ทดลองกับ IntelliJ IDE มากนัก
ขอบคุณ.
META-INF
ไฟล์ - หนึ่งบล็อกโพสต์ที่อาจช่วยได้: janschulte.wordpress.com/2014/03/20/…