MissingResourceException - не может найти пакет для базового имени - PullRequest
8 голосов
/ 23 июля 2010

Я знаю, что есть много вопросов и ответов именно об этой ошибке на 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

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

Ответы [ 2 ]

14 голосов
/ 23 июля 2010

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

РЕДАКТИРОВАТЬ : Хорошо, также обнаружил ошибку, почему все это было маленькими буквами.Проблема была в том, что я создавал локаль с:

Locale locale = new Locale("en_US");

вместо:

Locale locale = new Locale("en","US");
0 голосов
/ 29 марта 2017

Для тех, у кого возникли проблемы с сервером Glassfish, в этом случае есть возможность установить языковой стандарт в обзоре администратора

enter image description here

Простая перезапись языка по умолчанию, как показано на рисунке

Кто-то может найти это полезным, у меня были проблемы в течение нескольких часов, и я не хочу, чтобы у кого-то была такая проблема, а

...