使用IntelliJ中的build.sbt排除JAR文件中的依赖项签名文件

时间:2018-04-23 15:15:49

标签: java scala apache-spark intellij-idea sbt

我遇到类似于Invalid signature file digest for Manifest main attributes exception while trying to run jar file的问题,但是无法使用build.sbt来处理这个或许多其他修复工作并从IntelliJ 2018.1构建工件

该项目在IntelliJ中作为scala> sbt项目启动 Java版本是1.8.0_77

我的build.sbt包含:

scalaVersion := "2.11.8"

libraryDependencies ++= Seq(
  "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.0",
  "org.scalatest" %% "scalatest" % "3.0.5" % "test",
  "org.apache.spark" % "spark-core_2.11" % "2.3.0",
  "org.apache.spark" % "spark-sql_2.11" % "2.3.0",
  "com.amazonaws" % "aws-java-sdk" % "1.7.4",
  "org.apache.hadoop" % "hadoop-aws" % "2.7.1"
)

excludeFilter in Compile := "*.SF" || "*.DSA" || "*.RSA"

项目构建没有任何错误,并且在IntelliJ中运行正常,但是当我构建>构建工件并在运行IntelliJ的同一台机器上从命令行运行生成的jar:

java -jar myApp.jar

我明白了:

线程“main”中的异常java.lang.SecurityException:Manifest主要属性的签名文件摘要无效

1 个答案:

答案 0 :(得分:1)

这没有解决如何从IntelliJ中进行排除,但是会从jar中删除文件。

zip -d <jar file name>.jar META-INF/*.RSA META-INF/*.DSA META-INF/*.SF