首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ProGuard和ClassNotFoundError混淆Java代码:测试类和Maven

使用ProGuard和ClassNotFoundError混淆Java代码:测试类和Maven
EN

Stack Overflow用户
提问于 2012-11-18 00:09:45
回答 1查看 4.4K关注 0票数 2

我想用ProGuard对我的库进行模糊处理,并在pom.xml中添加以下代码

代码语言:javascript
复制
<build>
    <plugins>
        ...
        <plugin>
            <groupId>com.pyx4me</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>proguard</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <options>
                    <option>-allowaccessmodification</option>
                    <option>-keep class mypackage.AbstractSimulationFacadeTest</option>
                </options>
                <libs>
                    <lib>${java.home}/lib/rt.jar</lib>
                </libs>
            </configuration>
        </plugin>
    </plugins>
</build>

mypackage.AbstractSimulationFacadeTest是在src/test/java中定义的类。它在单元测试中使用。

当我运行mvn install时,ProGuard抱怨它找不到类mypackage.AbstractSimulationFacadeTest

代码语言:javascript
复制
[proguard] Note: the configuration refers to the unknown class 'mypackage.AbstractSimulationFacadeTest'
[proguard] Note: there were 1 references to unknown classes.
[proguard]       You should check your configuration for typos.
[proguard] Error: The output jar is empty. Did you specify the proper '-keep' options?

当我删除这行时

代码语言:javascript
复制
<option>-keep class mypackage.AbstractSimulationFacadeTest</option>

然后运行mvn install,我得到了mypackage.AbstractSimulationFacadeTestClassNotFoundError

我应该如何更改我的pom.xml文件,以使mvn install运行时没有错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-20 04:15:50

尝试使用较新版本的pro guard插件。您使用的是默认版本2.0.4。quick search of maven显示GitHub上有一个更新的版本,但使用了不同的组id:

代码语言:javascript
复制
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.6</version>

这应该会让你使用ProGuard 4.8,它可能会解决这个问题。

另外,查看Pro Guard docs,-keep选项应该是您正在构建的工件(src/-keep/java中的代码)的入口点,而不是测试用例的入口点。

最后,在我看来,您已经将抽象测试用例从src/main/java移到了src/ test /java。如果是这种情况,您可能需要执行mvn清理安装来清理目标目录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13432291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档