spring引导由以下原因引起:java.lang.UnsupportedOperationException:不支持的类版本号[53.0](最大52.0,java 1.8)
我目前正在从事一个Spring Boot项目,我打算用Proguard来混淆它。一切正常。但是当我尝试打包应用程序时,我收到了这个Proguard错误spring引导由以下原因引起:java.lang.UnsupportedOperationException:不支持的类版本号[53.0](最大52.0,java 1.8),java,spring-boot,proguard,obfuscation,Java,Spring Boot,Proguard,Obfuscation,我目前正在从事一个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))) [proguar
(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
我尝试了这么多的选择,但都没有成功。我甚至尝试升级到Java9,但被告知proguard不支持Java9。我正在使用proguard 5.3.3。最好的出路是什么?提前感谢。在收集了用户的贡献后,我最终使用了proguard jar文件的本地副本,它成功了!!!我创建了一个文件夹
resources/libs/proguard/
,并将最新的proguard.jar放入其中。在这种情况下,proguard6.0beta1。这是proguard配置
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
</execution>
</executions>
<configuration>
<proguardVersion>6.0beta1</proguardVersion>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}.jar</outjar>
<obfuscate>true</obfuscate>
<proguardInclude>${basedir}/proguard.conf</proguardInclude>
<libs>
<!-- Include main JAVA library required.-->
<lib>${java.home}/lib/rt.jar</lib>
<!-- Include crypto JAVA library if necessary.-->
<lib>${java.home}/lib/jce.jar</lib>
<lib>${java.home}/lib/jsse.jar</lib>
</libs>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>6.0beta1</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/resources/libs/proguard/proguard.jar</systemPath>
</dependency>
</dependencies>
com.github.wvengen
proguard maven插件
包裹
前卫
6.0beta1
${project.build.finalName}.jar
${project.build.finalName}.jar
符合事实的
${basedir}/proguard.conf
${java.home}/lib/rt.jar
${java.home}/lib/jce.jar
${java.home}/lib/jsse.jar
net.sf.proguard
前卫基地
6.0beta1
系统
${basedir}/src/main/resources/libs/proguard/proguard.jar
万分感谢 我和你一样也遇到了这个问题!幸运的是,问题解决了
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
org.springframework.boot
spring启动程序日志记录
在SpringBootStarter依赖项中添加此项,排除默认日志框架
它可以解决我的问题,但我不知道为什么。如果要使用ProGuard,您需要将代码降级为Java 8。老实说,我只是想摆脱ProGuard。你有没有在pom属性中尝试过
1.8
?是的,我有。你使用的是基于Java 9的库(在你的例子中是Log4j),而ProGuard不支持Java 9。您必须降级所有基于Java 9的依赖项。@NdzembomenyiAruna,看起来Java版本不匹配的问题正在您的日志库中发生。日志库是否与项目中使用的Java版本兼容??