【发布时间】:2018-01-13 12:18:36
【问题描述】:
我目前正在开发一个 Spring Boot 项目,我打算用 Proguard 进行混淆。一切正常。但是当我尝试打包应用程序时,我收到了这个 Proguard 错误
(Can't process class [META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class] (Unsupported class version number [53.0] (maximum 52.0, Java 1.8)))
[proguard] at proguard.InputReader.readInput(InputReader.java:188)
[proguard] at proguard.InputReader.readInput(InputReader.java:158)
[proguard] at proguard.InputReader.readInput(InputReader.java:136)
[proguard] at proguard.InputReader.execute(InputReader.java:88)
[proguard] at proguard.ProGuard.readInput(ProGuard.java:218)
[proguard] at proguard.ProGuard.execute(ProGuard.java:82)
[proguard] at proguard.ProGuard.main(ProGuard.java:538)
[proguard] Caused by: java.io.IOException: Can't process class [META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class] (Unsupported class version number [53.0] (maximum 52.0, Java 1.8))
[proguard] at proguard.io.ClassReader.read(ClassReader.java:112)
[proguard] at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
[proguard] at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
[proguard] at proguard.io.JarReader.read(JarReader.java:65)
[proguard] at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
[proguard] at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
[proguard] at proguard.InputReader.readInput(InputReader.java:184)
[proguard] ... 6 more
[proguard] Caused by: java.lang.UnsupportedOperationException: Unsupported class version number [53.0] (maximum 52.0, Java 1.8)
[proguard] at proguard.classfile.util.ClassUtil.checkVersionNumbers(ClassUtil.java:145)
[proguard] at proguard.classfile.io.LibraryClassReader.visitLibraryClass(LibraryClassReader.java:89)
[proguard] at proguard.classfile.LibraryClass.accept(LibraryClass.java:306)
[proguard] at proguard.io.ClassReader.read(ClassReader.java:86)
[proguard] ... 12 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:22 min
[INFO] Finished at: 2018-01-13T13:10:43+01:00
[INFO] Final Memory: 26M/281M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.14:proguard (default) on project ESMANSOFT: Obfuscation failed (result=1) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
我尝试了很多选择,但都没有奏效。我什至尝试升级到 Java 9,但被告知 proguard 不支持 java 9。我使用的是 proguard 5.3.3。最好的出路是什么?提前致谢。
【问题讨论】:
-
如果你想使用 ProGuard,你需要将你的代码降级到 Java 8。不过老实说,我只想摆脱 ProGuard。
-
你在 pom 属性中尝试过
<java.version>1.8</java.version>吗? -
是的,我有这个
-
您正在使用基于 Java 9 的库(在您的情况下为 Log4j)并且 ProGuard 不支持 Java 9。您必须降级所有基于 Java 9 的依赖项。
-
@NdzembomenyiAruna,它看起来像 Java 版本不匹配问题,它正在发生在您的日志库中。您的日志库是否与您在项目中使用的 Java 版本兼容??
标签: java spring-boot proguard obfuscation