在阅读了其他类似问题后,我仍然找不到解决方案。我得到以下堆栈跟踪,它提示一个 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 中正确设置。
我发现 0034 是 Java 8 的十六进制,但它甚至没有安装在我的机器中。
我还尝试编辑 proguard.bat,建议在 thread ,没有运气。
有人对此有什么想法吗?
最佳答案
尽管该类是用 Java 7 编译的,并且命令 javap -verbose
是这样说的,但当我在 Android Studio 中打开 .class 文件时,它显示反编译的 .class 文件、字节码版本:52.0 (Java 8) 在屏幕顶部。
最后,删除并再次编译 jar 就成功了。
关于java - 坏类咖啡馆宝贝或版本 0034,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33241359/