Java 1.8的sbt proguard问题

Java 1.8的sbt proguard问题,sbt,proguard,sbt-proguard,Sbt,Proguard,Sbt Proguard,我正在尝试使用获取更小的标量可执行jar文件。 我添加了project/plugin.sbt这两行代码: addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0") addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2") 第一个是获取uberjar文件,我可以使用sbt-assembly来获取uberjar,这很好 然后,我执行了sbt-proguard:proguard以获

我正在尝试使用获取更小的标量可执行jar文件。 我添加了project/plugin.sbt这两行代码:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2")
第一个是获取uberjar文件,我可以使用
sbt-assembly
来获取uberjar,这很好

然后,我执行了
sbt-proguard:proguard
以获取此错误消息

[error] Error: Can't read [/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/rt.jar] (Can't process class [apple/applescript/AppleScriptEngine.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)))
java.lang.RuntimeException: Proguard failed with exit code [1]
    at scala.sys.package$.error(package.scala:27)
    ...
    at java.lang.Thread.run(Thread.java:745)
[error] (proguard:proguard) Proguard failed with exit code [1]
从这篇文章的提示中:, 我使用export Java_HOME=
/usr/libexec/Java_HOME-v'1.6*”
命令切换到Java 1.7和Java 1.6,以运行proguard来获取细线条的jar文件,但这不会运行

Invalid or corrupt jarfile target/scala-2.11/proguard/myproject_2.11-1.0.jar
可能有什么问题?这些是添加到
build.sbt
的行

proguardSettings

ProguardKeys.options in Proguard ++= Seq("-dontnote", "-dontwarn", "-ignorewarnings")

ProguardKeys.options in Proguard += ProguardOptions.keepMain("core.HelloWorld")

我相信这是记录在案的专业后卫

使用
java-classpath--class classname
运行应用程序应该可以


这是因为pro guard默认情况下会从jar中删除所有清单文件,因此java运行时无法找到jar类条目。另一种方法是保留MANIFEST.md文件,并使用
java-jar
选项运行它,但我从未尝试过这样做。

定义一个支持java 1.8的最新Proguard版本

ProguardKeys.proguardVersion in Proguard := "5.3.3"
如果内存不足,还有几个有用的

javaOptions in (Proguard, ProguardKeys.proguard) := Seq("-Xmx2G")
javaOptions in (Proguard, ProguardKeys.proguard) += "-Xss1G"

你有没有想过?