历史版本2 :排序常见问题 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

本文将介绍各类排序使用过程中遇到的问题和解决方案。

2. 排序报错编辑

2.1 问题描述

部分报表在使用排序功能时,偶尔会抛出异常:Comparison method violates its general contract,如下图所示:

1585300804370699.jpg

2.2 原因分析

在 JDK6 中运行正常,而在 JDK7 中却会抛异常,因为 JDK7 及之后版本底层的排序算法从 MergeSort 换成了 TimSort。

2.3 解决方案

如果要继续使用 JDK6 的排序算法,可以打开%FR_HOME%\ bin\designer.vmoptions 在JVM 启动参数中加入参数:

-Djava.util.Arrays.useLegacyMergeSort=true 

如下图所示:

Snag_1e1fa1db.png

配置后,就会依旧使用 JDK6 的排序算法,解决这个兼容的问题。