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

使用ProGuard混淆Maven测试框架时出现错误求助

问题解决:Maven打包时ProGuard找不到Java核心类错误

错误核心

从日志能明确看到,ProGuard无法识别java.lang.Object、java.lang.String这类Java基础类,本质是ProGuard没有正确关联JDK标准库文件,导致无法解析代码里对Java核心API的引用。再加上你的proguard.cfg为空,没有配置必要的处理规则,最终触发打包失败。

解决步骤

1. 修正ProGuard Maven插件配置

修改pom.xml中的proguard-maven-plugin配置,补充JDK标准库引用,同时调整参数避免路径问题:

<build>
    <plugins>
        <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>
            <configuration>
                <proguardVersion>7.2.2</proguardVersion>
                <obfuscate>true</obfuscate>
                <injar>${project.build.finalName}.jar</injar>
                <outjar>${project.build.finalName}-small.jar</outjar>
                <proguardInclude>src/main/resources/proguard.cfg</proguardInclude>
                <!-- 关联Java14模块化标准库 -->
                <libraryjars>${java.home}/jmods/java.base.jmod</libraryjars>
                <!-- 自动引入项目依赖 -->
                <includeDependency>true</includeDependency>
                <!-- 移除临时目录配置,避免路径异常 -->
            </configuration>
        </plugin>
    </plugins>
</build>

注:如果是JDK8及以下版本,把libraryjars路径改为${java.home}/lib/rt.jar即可。

2. 配置proguard.cfg规则

在src/main/resources/proguard.cfg中添加基础规则,确保核心类和入口方法不被混淆:

# 保留主类入口方法,保证打包后可运行
-keep class org.example.Main {
    public static void main(java.lang.String[]);
}

# 保留测试类的公开方法(按需调整)
-keep class org.example.test {
    public <methods>;
}

# 屏蔽Java核心类的警告(确认无依赖问题时使用)
-dontwarn java.lang.**
-dontwarn java.io.**

3. 修正maven-jar-plugin的位置

你的pom.xml错误地将maven-jar-plugin放在了<dependencies>节点下,它是构建插件,必须移到<build><plugins>中:

<build>
    <plugins>
        <!-- 正确配置maven-jar-plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>org.example.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <!-- 上面的proguard插件配置 -->
    </plugins>
</build>

4. 重新执行打包命令

mvn clean package

内容的提问来源于stack exchange,提问作者Dheeraj Kumar Rajak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:09:54