Can't process class [META-INF/versions/9/org/apache/logging/log4j/util/ProcessIdUtil.class] (Unsuppo

最近在做Spring 升级SpringBoot 的项目工作遇到了混淆的一个坑

错误: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))

到网上搜索的答案是:

要解决报错需屏蔽log4j中使用java9 api的类。在proguard的配置文件中log4j-api-2.10.0.jar后面加入(!META-INF/versions/9/**.class,!module-info.class)

配置文件示例

-libraryjars lib\log4j-api-2.10.0.jar(!META-INF/versions/9/**.class,!module-info.class)

-libraryjars lib\log4j-core-2.10.0.jar

-libraryjars lib\log4j-jcl-2.10.0.jar

-libraryjars lib\log4j-web-2.10.0.jar

后来我添加了,还是不行,因为maven 会从我的本地仓库去获取jar包,所以这个lib\....jar路径是错误的,需要修改你你本地的maven仓库地址,同时在<configuration>中添加api的排除;

<exclusions>
        <exclusion>
             <artifactId>log4j-api</artifactId>
             <groupId>org.apache.logging.log4j</groupId>
        </exclusion>
</exclusions>

这种方式不推荐;

后面我去GitHub看了一下直接修改progurad的版本号,让其支持jdk1.8以及更好版本;

            <plugin>
                <groupId>com.github.wvengen</groupId>
                <artifactId>proguard-maven-plugin</artifactId>
                <version>2.0.14</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>proguard</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <proguardVersion>6.0.2</proguardVersion>
                    <obfuscate>true</obfuscate>
                    <!-- 是否将生成的PG文件安装部署-->
                    <attach>true</attach>
                    <!-- 是否混淆-->
                    <obfuscate>true</obfuscate>
                    <!-- 指定生成文件分类 -->
                    <attachArtifactClassifier>pg</attachArtifactClassifier>
                    <proguardInclude>./proguard.cfg</proguardInclude>
                    <libs>
                        <lib>${java.home}/lib/rt.jar</lib>
                        <lib>${java.home}/lib/jce.jar</lib>
                    </libs>
                    <addMavenDescriptor>false</addMavenDescriptor>
                    <injar>${project.build.finalName}.jar</injar>
                    <outjar>${project.build.finalName}-pg.jar</outjar>
                    <outputDirectory>${project.build.directory}</outputDirectory>

                    <exclusions><exclusion></exclusion></exclusions>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard-base</artifactId>
                        <version>6.0.2</version>
                        <scope>runtime</scope>
                    </dependency>
                </dependencies>
            </plugin>

配置文件的progurad.cfg的配置文件直接放在项目根目录下

# 这里的配置根据自己的项目需要进行添加,这里我只是一个例子
-target 1.8
-dontshrink
-dontoptimize
-useuniqueclassmembernames
-adaptclassstrings
-ignorewarnings
-dontusemixedcaseclassnames
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keepclasseswithmembers public class * { public static void main(java.lang.String[]);}
#-libraryjars /Users/mac/.m2/repository/org/apache/logging/log4j/log4j-api/2.10.0/log4j-api-2.10.0.jar(!META-INF/versions/9/**.class,!module-info.class)

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值