2014-03-26 33 views
22

我总是得到这个erroe当我试图进行模糊处理的应用程序使用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,并将检查项目-config文件,但总是相同的错误。我正在使用最新版本的Intellij IDEA

回答

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

+0

我刚刚试过这个,得到了'java.lang.IllegalArgumentException:值不是引用值[proguard.evaluation.value.InstructionOffsetValue]'。 – WonderCsabo

+0

@WonderCsabo 你在'android-sdk \ tools \ proguard \ lib'中替换了proguard.jar吗?我使用这个从一个月没有任何问题。注意我假设Proguard版本是你替换这个文件是从source-forge http:// sourceforge下载的stable 4.11。net/projects/proguard/files/proguard /你正在使用官方的Oracle Java JDK 1.8 – Silverstorm

+0

我刚加了整个proguard文件夹以避免版本不匹配 – Silverstorm

2

ProGuard的下载这个还没有被更新,以支持Java 8

issue has already been raised against ProGuard

埃里克Lafortune(ProGuard的开发商)指出早在2013年10月

我此刻非常忙,所以我切实将无法在短期内完成这个,对不起。尽管如此,我仍在关注这些发展。

他还表示

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

9

ProGuard的5.0(在2014年8月公布的)支持Java 8.

+0

**作品很棒**太糟糕了,这个答案如此不显眼。 –

相关问题