【问题标题】:Java Proguard and int comparatorJava Proguard 和 int 比较器
【发布时间】:2013-07-05 12:25:43
【问题描述】:

我有一个实现 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 配置中添加哪些额外选项来消除此错误?

【问题讨论】:

  • 错误的哪一部分你不明白?向我们展示您的代码。
  • 这是我得到的错误... int compare(int, int)
  • 你的 proguard 配置是什么?在我的测试中,是可以的。

标签: java proguard


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多