在 Java 6 中编译,在 7 中运行 - 如何指定 useLegacyMergeSort? [英] Compile in Java 6, run in 7 - how to specify useLegacyMergeSort?

查看:37
本文介绍了在 Java 6 中编译,在 7 中运行 - 如何指定 useLegacyMergeSort?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道我是否在 Java 6 中编译,但有人在 Java 7 上运行程序,会使用 Java 6 或 7 版本的 Arrays.sort 吗?

I'm wondering if I compile in Java 6, but someone runs the program on Java 7, will the Java 6 or 7 version of Arrays.sort be used?

这很重要,因为新的归并排序会抛出 IllegalArgumentException,而旧的不会(参见 比较方法违反了它的一般约定!仅限 Java 7)

It's important because the new mergesort throws an IllegalArgumentException, and the old one doesn't (see Comparison method violates its general contract! Java 7 only)

现在,可以使用 Arrays.useLegacyMergeSort 在 Java 7 中进行编译,但显然该标志不适用于 Java 6 - 我们希望与 Mac OS Snow Leopard(使用 6)兼容.

Now, it's possible to compile in Java 7 using Arrays.useLegacyMergeSort, but obviously that flag isn't available for Java 6 - and we want to be compatible on Mac OS Snow Leopard (which uses 6).

出于某种原因(参见 http://madbean.com/2006/target14/)-target 编译器标志似乎无法生成兼容的代码,因此我们宁愿在 Java 6 中进行编译.

For some reason (see http://madbean.com/2006/target14/) the -target compiler flag doesn't seem to produce compatible code, so we'd rather compile in Java 6.

有什么建议吗?

推荐答案

尝试设置系统属性

java -Djava.util.Arrays.useLegacyMergeSort=true ...

请注意,它不是来自 Arrays 公共 API,而是来自 src

Note that it's not from Arrays public API but from src

   /**
     * Old merge sort implementation can be selected (for
     * compatibility with broken comparators) using a system property.
     * Cannot be a static boolean in the enclosing class due to
     * circular dependencies. To be removed in a future release.
     */
    static final class LegacyMergeSort {
        private static final boolean userRequested =
            java.security.AccessController.doPrivileged(
                new sun.security.action.GetBooleanAction(
                    "java.util.Arrays.useLegacyMergeSort")).booleanValue();
    }

这篇关于在 Java 6 中编译,在 7 中运行 - 如何指定 useLegacyMergeSort?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆