Java 17项目ProGuard版本不匹配致构建失败,求解决方案
解决方案:ProGuard版本冲突+Java 17兼容问题
核心问题分析
你遇到的两个异常是关联的:
- 日志显示
proguard-base-7.2.2.jar存在,但实际运行的是ProGuard 6.2.2,原因是**com.github.wvengen:proguard-maven-plugin:2.6.0自身依赖的ProGuard版本就是6.2.2**,插件会优先加载内置的旧版本,忽略你手动指定的ProGuard版本。 - 6.2.2版本的ProGuard最高仅支持Java 13(class版本57.0),无法处理Java 17编译出的class文件(版本61.0),因此出现版本不兼容错误。
具体解决步骤
1. 升级proguard-maven-plugin到兼容ProGuard 7.x的版本
旧版插件(如2.6.0)和ProGuard 7.x不兼容,直接升级插件到最新稳定版(如3.2.1),新版插件默认适配ProGuard 7.x,无需额外配置:
<plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <!-- 使用支持ProGuard 7.x的插件版本 --> <version>3.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> <configuration> <!-- 你的ProGuard配置 --> <proguardVersion>7.2.2</proguardVersion> <!-- 其他配置项 --> </configuration> </plugin>
2. (备选)排除插件自带的旧版ProGuard,强制使用7.2.2
如果暂时无法升级插件,可在插件依赖中排除旧版本的ProGuard,手动引入7.2.2:
<plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.6.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>proguard</goal> </goals> </execution> </executions> <dependencies> <!-- 排除插件自带的旧版ProGuard,强制使用指定版本 --> <dependency> <groupId>com.guardsquare</groupId> <artifactId>proguard-base</artifactId> <version>7.2.2</version> </dependency> </dependencies> <configuration> <!-- 你的ProGuard配置 --> </configuration> </plugin>
3. 验证修复效果
- 执行
mvn clean package,查看日志中ProGuard版本是否显示为7.2.2。 - 确认Java 17的class文件(版本61.0)能被正常处理,不再出现版本不兼容错误。
额外注意事项
- 执行
mvn -v确认Maven使用的JDK是17,确保JAVA_HOME配置生效。 - 清理Maven本地缓存:删除
C:\Users\rohan.dahiya\.m2\repository\com\guardsquare目录,再重新构建,避免旧版本Jar包残留干扰。
内容的提问来源于stack exchange,提问作者Rohan Dahiya
相关产品推荐
相关产品推荐

