0

我有一个实现 Compartor 的类,它覆盖了比较函数:

import java.util.Comparator;

public class ScoreComparator implements Comparator<Score> 
{
    @Override
    public int compare(Score s1, Score s2) 
    {
        return Integer.compare(s2.score, s1.score);
    }
}

当我使用 proguard 编译时,出现以下错误:

在类 java.lang.Integer 中找不到引用的方法 'int compare(int,int)'
您应该检查是否需要指定其他程序 jar。
有 1 个未解决的对程序类成员的引用。
您的输入类似乎不一致。
您可能需要重新编译它们并重试。
或者,您可能必须指定选项
'-dontskipnonpubliclibraryclassmembers'。

所以我显然添加了该选项。但是,我得到同样的错误。

那么应该在 proguard 配置中添加哪些额外的选项来消除这个错误呢?

4

1 回答 1

1

您的代码使用 Integer#compare(int,int),它只存在于 JDK 1.7 中。因此,您还应该确保您指定给 ProGuard 的 Java 运行时 jar 来自 JDK 1.7。

注意:您似乎将 Java 运行时 jar 指定为程序 jar (-injars)。您可能希望将其指定为库 jar (-libraryjars),因此它最终不会成为您应用程序的一部分。

于 2013-07-08T14:08:58.437 回答