You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Proguard Maven Plugin未使用指定版本导致类版本不兼容报错如何解决

解决方法

问题根因

你当前使用的2.0.14版本proguard-maven-plugin内置了低版本Proguard,你将proguard-base依赖声明在项目全局<dependencies>节点中无法覆盖插件自身的依赖,同时该版本插件的<proguardVersion>参数优先级不足,导致实际运行时还是使用内置的旧版Proguard,最高仅支持Java 8(类版本号52.0),无法处理Java 10编译的54.0版本类。

修复步骤

  • 移除项目全局<dependencies>中声明的proguard-base依赖
  • 将proguard-base依赖声明到proguard-maven-plugin的内部<dependencies>节点下,覆盖插件内置的Proguard版本

修改后的pom.xml配置示例

<plugin>
    <groupId>com.github.wvengen</groupId>
    <artifactId>proguard-maven-plugin</artifactId>
    <version>2.0.14</version>
    <!-- 插件内部依赖,覆盖内置Proguard版本 -->
    <dependencies>
        <dependency>
            <groupId>net.sf.proguard</groupId>
            <artifactId>proguard-base</artifactId>
            <version>6.2.2</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>proguard</goal>
            </goals>
            <configuration>
                <injar>${project.build.finalName}-jar-with-dependencies.jar</injar>
                <proguardVersion>6.2.2</proguardVersion>
                <options>
                    <option>-allowaccessmodification</option>
                    <option>-dontoptimize</option>
                    <option>-dontshrink</option>
                    <option>-dontnote</option>
                    <option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod</option>
                    <option>-flattenpackagehierarchy ''</option>
                    <option>-dontwarn</option>
                    <option>-keepattributes Signature</option>
                    <option>-keep public class com.myproject.** { *; }</option>
                    <option>-keepclassmembernames class * { @javafx.fxml.FXML *; }</option>
                </options>
                <libs>
                    <lib>${java.home}/lib/rt.jar</lib>
                    <lib>${java.home}/lib/jfxrt.jar</lib>
                </libs>
            </configuration>
        </execution>
    </executions>
</plugin>

补充说明

如果修改后仍然存在版本不匹配问题,可以升级proguard-maven-plugin到更高的稳定版本,对高版本Proguard的适配性更好。如果后续需要处理更高版本Java编译的类,也可以将Proguard版本升级到7.x系列,支持到最新的Java版本。

内容的提问来源于stack exchange,提问作者DeveloperKurt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:18:00