Error Proguard不支持的类版本号

时间:2014-03-26 18:32:29

标签: android intellij-idea proguard

当我尝试使用proguard

混淆应用程序时,我总是会遇到这种错误
Error:ProGuard: [MyApp] java.io.IOException: Can't read [C:\Program Files\Java\jdk1.8.0\jre\lib\rt.jar] (Can't process class [com/oracle/net/Sdp$1.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)))

我已经更新了Proguard并检查了项目配置文件,但始终是相同的错误。我正在使用最新版本的Intellij IDEA

4 个答案:

答案 0 :(得分:26)

似乎Proguard实际上不支持Java 8。您必须使用JDK版本7。

EDIT-1

我重新编译了Proguard以支持JDK 8类,不支持Java 8新功能,但如果您的代码不使用Java 8,则新语法(例如Lambda Expression)应该没有问题。测试了一些Android项目。

使用替换

中的文件proguard.jar
android-sdk\tools\proguard\ 

,内容为THIS ARCHIVE

EDIT-2

最近已经发布了官方Proguard 5应该解决的问题。您可以从HERE

下载

答案 1 :(得分:9)

ProGuard 5.0(2014年8月发布)支持Java 8。

答案 2 :(得分:2)

ProGuard尚未更新以支持Java 8。

issue has already been raised against ProGuard

Eric Lafortune(ProGuard开发人员)于2013年10月指出

  

我现在很忙,所以现实上我无法在短期内完成这项工作,抱歉。我现在仍然关注这些发展。

他还说

  

如果更改或禁用ClassUtil#checkVersionNumbers,ProGuard可能适用于仅使用旧功能的类文件。

答案 3 :(得分:0)

github上有一个pyx4me ProGuard Maven插件的后续版本,支持ProGuard 5.2,因此支持Java 8:

https://github.com/wvengen/proguard-maven-plugin

http://wvengen.github.io/proguard-maven-plugin/

干杯, Ekho