在阅读其他类似问题后,我仍然无法找到解决方案。我得到以下堆栈跟踪,它抱怨了一个包含我开发的库的jar,用Java 1.7编译:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.android.dx.command.dexer.Main.processClass(Main.java:704)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
at com.android.dx.command.dexer.Main.access$300(Main.java:83)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:632)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
...while parsing build/classes/main/com/utils/helpers/DateTimeAdapter.class
我在Android Studio和Eclipse中都将编译器级别设置为java 7,并且在build.gradle文件中添加sourceCompatibility和targetCompatibility没有解决此问题。 JDK的路径也在IDE中正确设置。
我发现Java 8的0034是十六进制的,但它甚至没有安装在我的机器上。
我也试过编辑proguard.bat,在thread中建议,没有运气。
有没有人对此有任何想法?
答案 0 :(得分:2)
尽管该类是使用Java 7编译的,并且命令javap -verbose
是这样说的,但当我在Android Studio中打开.class文件时,它显示 Decompiled .class文件,字节码版本:52.0(Java 8)位于屏幕顶部。
最后,删除并再次编译jar就可以了。