public static String getDatePattern(Locale locale, int dateStyle) {
String[] dateTimePatterns = (String[]) patterns.get(locale);
if (dateTimePatterns == null) {
ResourceBundle r = LocaleData.getLocaleElements(locale);
dateTimePatterns = r.getStringArray("DateTimePatterns");
patterns.put(locale, dateTimePatterns);
}
return dateTimePatterns[dateStyle + 4];
}是由
         /**
 * Creates new instance of Common converter with specified locale
 *
 * @param locale Locale to use
 */
public CommonConverter(Locale locale) {
this.locale = locale;
this.formatter = new SimpleDateFormat(DateUtil.getDatePattern(locale), locale);
}
调用的,运行时系统说找不到sun/text/resources/LocaleData,我以前用1.4的jre没有问题,rt.jar包下能找到
LocaleData$.class,但是换成jre1.6发现rt.jar下没有这个类了,请问现在应该怎么处理,我们现在要用jre1.6因为别人提供的接口包用的jre1.6,如果我不用就报版本错误。所以只能解决ResourceBundle r = LocaleData.getLocaleElements(locale);这个问题。

解决方案 »

  1.   

    以sun开头的包是不提供给你用的,以java或javax开头的才是给你用的。
    如果你知道properties文件的路径,用ResourceBundle r=ResourceBundle.getBundle(String baseName, Locale locale)来代替.
    如果确认不了,只能将LocaleData反编译,在你自己的类中实现getLocaleElements方法.
      

  2.   

    对不起,一直忙没有时间来结贴。这个是我修改后的方法
        public static String getDatePattern(Locale locale, int dateStyle) {
     /*     在jre1.6中 LocaleData对象找不到,可能与jre版本有关暂时屏蔽,在将在寻找更加有效解决办法,暂时用固定日期格式代替
      *  String[] dateTimePatterns = (String[])patterns.get(locale);
            if (dateTimePatterns == null) {
                ResourceBundle r = LocaleData.getLocaleElements(locale);
                dateTimePatterns = r.getStringArray("DateTimePatterns");
                patterns.put(locale, dateTimePatterns);
            }
            return dateTimePatterns[dateStyle + 4];*/
         return "yyyy-M-d";
        }
    请注意这个方法,实际上他也是写死的,这个方法的作用是通过Locale找到所属国家所有时间表示形式,我看了下他的输出结果就是"yyyy-M-d"所以我就直接给写死在这里了,之前1.5确实可以用,所以说不让调用sun包下的应该不是这个原因,我去看1.5包下有LocaleData$.class类,而1.6下没有,大家可以去看看,目前已经决绝。谢谢各位帮忙,我在网上找没有找到关于这个好的解决办法,希望以后有人能提供。个人猜测sun取消了,或者是没有开发好其他国家的版本。