我在Mac OS X 10.9.2和sbt 0.13.3-SNAPSHOT(从源代码构建),Java 8和sbt-proguard 0.2.2] >插件。
sbt 0.13.3-SNAPSHOT
[jacek]> sbtVersion [info] 0.13.3-SNAPSHOT
Java 8
$ /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/bin/java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
project / plugins.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2")
当我在sbt shell中运行
proguard:proguard
时,它爆炸了,但出现以下异常:
[sbt-updates]> show proguard:proguard [info] ProGuard, version 4.9 [info] Reading program directory [/Users/jacek/oss/sbt-updates/target/scala-2.10/sbt-0.13/classes] (filtered) [info] Reading program jar [/Users/jacek/.ivy2/cache/org.scalaz/scalaz-concurrent_2.10/bundles/scalaz-concurrent_2.10-7.1.0-M6.jar] (filtered) [info] Reading program jar [/Users/jacek/.sbt/boot/scala-2.10.3/lib/scala-library.jar] (filtered) [info] Reading program jar [/Users/jacek/.ivy2/cache/org.scalaz/scalaz-core_2.10/bundles/scalaz-core_2.10-7.1.0-M6.jar] (filtered) [info] Reading program jar [/Users/jacek/.ivy2/cache/org.scalaz/scalaz-effect_2.10/bundles/scalaz-effect_2.10-7.1.0-M6.jar] (filtered) [info] Reading library jar [/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar] [error] Error: Can't read [/Library/Java/JavaVirtualMachines/jdk1.8.0.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))) [trace] Stack trace suppressed: run last proguard:proguard for the full output. [error] (proguard:proguard) Proguard failed with exit code [1] [error] Total time: 16 s, completed Apr 19, 2014 2:27:56 PM
为什么可能是错误原因?
我使用的是Mac OS X 10.9.2和sbt 0.13.3-SNAPSHOT(从源代码构建),Java 8和sbt-proguard 0.2.2插件。 sbt 0.13.3-SNAPSHOT [jacek
[ProGuard似乎还不支持Java 8,因此更改脚本中使用的Java版本以启动sbt很有帮助。
sbt-proguard
这与Java 7]的以下版本一起使用:
[sbt-updates]> show proguard:proguard
[info] Compiling 8 Scala sources to /Users/jacek/oss/sbt-updates/target/scala-2.10/sbt-0.13/classes...
[warn] there were 6 feature warning(s); re-run with -feature for details
[warn] one warning found
[info] ProGuard, version 4.9
[info] Reading program directory [/Users/jacek/oss/sbt-updates/target/scala-2.10/sbt-0.13/classes] (filtered)
[info] Reading program jar [/Users/jacek/.ivy2/cache/org.scalaz/scalaz-concurrent_2.10/bundles/scalaz-concurrent_2.10-7.1.0-M6.jar] (filtered)
...
可以通过将$ /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
中的键proguardVersion
更改为5.0以上的设置来更新sbt-proguard使用的Proguard的版本。
这个问题真的很有趣,我面临的是同一个问题,唯一的区别是我使用maven以编程方式添加了Proguard。因此,我认为发布解决方案会有所帮助,尽管它与主要问题有所不同。对于所有使用maven并遇到相同问题的用户,我的解决方法是通过在插件内部将其用作运行时来更新Proguard的版本,因此工作pom.xml如下所示:
https://github.com/sbt/sbt-proguard/issues/5