1
2
3
4
5
6
|
Comparator chinese_cmp = Collator.getInstance(Locale.CHINA); String[] strs = new String[] { "王五" , "李二" , "吴二" }; Arrays.sort(strs, chinese_cmp); for (String str : strs) System.out.println(str); |
上面这段代码是用来对中文进行排序,执行后的结果是:
李二
王五
吴二
但是,如果运行这个程序的时候指定了扩展jar包路径,例如
java -Djava.ext.dirs=xxxx 类名
得到的结果就变成了
吴二
李二
王五
百思不得其解,想起以前做加密的时候也曾遇见类似的问题,明明一个运行很好的程序放到其他地方就不能跑,原因是跟jre的扩展lib目录中的jar包问题,再次打开
JRE/lib/ext 目录发现有这么一个文件
localedata.jar,猜想应该跟这个文件有关,把这个文件拷贝到手工指定的扩展jar包路径xxxx中后,再次运行程序,问题解决。