2016-03-06 107 views
0

我使用JavaGuard混淆我的.jar文件之一,並得到這個錯誤:奇怪的JavaGuard錯誤?

# ERROR - corrupt class file: me/project/main/Main.class java.io.IOException: Incompatible version number for class file format: 52/0 at net.sf.javaguard.classfile.ClassFile.read(ClassFile.java:160) at net.sf.javaguard.classfile.ClassFile.create(ClassFile.java:116) at net.sf.javaguard.GuardDB.addClasses(GuardDB.java:415) at net.sf.javaguard.GuardDB.startObfuscate(GuardDB.java:274) at net.sf.javaguard.GuardDB.obfuscate(GuardDB.java:243) at JavaGuard.obfuscate(JavaGuard.java:322) at JavaGuard.start(JavaGuard.java:179) at JavaGuard.main(JavaGuard.java:146)

我能做些什麼來解決這個問題?我的代碼編譯得很好,並且.jar導出沒有錯誤。我的代碼或.java文件沒有問題。

回答

0

看起來您正在使用Java 8編譯代碼,然後使用不支持Java 8類格式的javaguard版本。該格式:在異常消息52是類格式版本,Java的說明8.本維基百科條目列出了可能的值和相應的Java版本https://en.wikipedia.org/wiki/Java_class_file

這是不足爲奇的 - 最後javaguard版本似乎是一個1.0測試版。您可能需要使用其他工具

+0

我發現某些錯誤的.jar本身。我嘗試使用JD-GUI來反編譯它,並且每個類都顯示消息「// INTERNAL ERROR //」 我刪除了代碼中的所有錯誤和警告,但是當我導出.jar時,這些類不能正確反編譯。我的導出方法有問題嗎?我使用引用的.jars。 –

+0

也許jd-gui不支持Java 8? – kiwiron

0

對於「// INTERNAL ERROR //」,您可以使用Luyten反編譯器;它會得到你的代碼。

對於「#錯誤 - corrupt類文件:me/project/main/Main.class java.io.IOException:類文件格式不兼容的版本號:52/0 at」錯誤,您可能想要使用較新版本的proguard。

我有這個問題(使用proguard maven插件),並使用5.3.2解決它。