MissingResourceException - Не может найти пакет для базового имени

Я знаю, что существует много вопросов, и отвечает точно об этой ошибке на stackoverflow и других форумах. Но я все еще не могу найти решение...

Поскольку скорость обосновывает, что у меня есть один служебный класс, который загружает все статические карты данных (например, месяцы) в зависимости от обеспеченной локали.

Таким образом, этот служебный класс выглядит примерно так:

public static final String GLOBAL_MESSAGES = "globalMessages";

private static Map<Integer,Month> monthsMap;

private ResourceBundle getResourceBundle(Locale locale) {
    ResourceBundle rb = ResourceBundle.getBundle(GLOBAL_MESSAGES, locale);
    return rb;
}

private Map<Integer,Month> getMonths() {
    if(monthsMap == null) {
        setMonths();
    }
    return monthsMap;
}

private void setMonths() {
    try {
        monthsMap = getFactory().getDAO().getAllMonths();
    } catch (SQLException e) {
        logger.error(e);
    } catch (EmptyResultException e) {
        logger.error(e);
    }
}

public Map<Integer,Month> getMonths(Locale locale) {
    if(locale == null) {
        return monthsMap;
    } else {
        if(this.locale != locale) {
            this.locale = locale;
            setMonths();
        }
    }
    ResourceBundle rb = getResourceBundle(locale);
    Map<Integer,Month> map = new HashMap<Integer, Month>();
    for(Month akVO : getMonths().values()) {
        try {
            akVO.setName(rb.getString(akVO.getName()));
        } catch (MissingResourceException e) {
            //already done
        }
        map.put(akVO.getId(), akVO);
    }       
    return map;
}

Файлы globalMessages.properties (globalMessages_en_US.properties...) находятся непосредственно в исходных ресурсах пакета. При развертывании на Tomcat существует в папке WEB-INF/classes.

Теперь проблема. Все это работает при работе в этом приложении. Но у меня есть другое приложение, которое соединяет через REST API (JAX-RS) этому. При выполнении запроса App/rest/months.xml я получаю следующую ошибку:

java.util.MissingResourceException: Can't find bundle for base name globalMessages, locale en_us

Я действительно потерян. И отчаянный...

8
задан Trick 23 July 2010 в 13:20
поделиться

1 ответ

Хорошо ... Обнаружил ошибку. Спустя один f * день ... Проблема в регистронезависимых буквах. Несмотря на то, что при установке локали из состояния покоя с помощью «en_US» каким-то образом ResourceBundle (при прохождении через REST) ​​ищет «en_us».

ИЗМЕНИТЬ : Хорошо, обнаружил также ошибку, почему все было маленькими буквами. Проблема заключалась в том, что я создавал локаль с:

Locale locale = new Locale("en_US");

вместо:

Locale locale = new Locale("en","US");
14
ответ дан 5 December 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: