MissingResourceException из-за объединения загрузчика классов (вызывающий объект не в WEB-INF/классах)

Я получаю MissingResourceException при доступе к пакету ресурсов. Проблема возникает из-за моего конкретного загрузчика классов.

Я пытаюсь прочитать text.properties из класса, который находится в JBOSS_HOME/server/myServer/myDeployDir/myEAR/myJAR.jar (примечание: вызывающий класс не находится в WEB-INF/classes). Файл text.properties находится здесь JBOSS_HOME/server/myServer/myDeployDir/myEAR/myWAR/WEB-INF/classes.

При запуске следующего кода:

Locale locale = new Locale ("de", "DE");
ResourceBundle rb = ResourceBundle.getBundle(textproperties, locale);

я получаю следующее

java.util.MissingResourceException: Can't find bundle for base name text, locale de_DE.

К сожалению, я НЕ должен изменять структуру своего приложения. Я не могу ни переместить вызывающий класс (теперь в myJAR.jar) в WEB-INF/classes, ни упаковать файл свойств в myJAR.jar. Есть ли способ получить доступ к файлу свойств извне WEB-INF/классов?

Приложение работает на JBOSS 4.2.3, поэтому я думаю, что мне нужно помнить об обработке потоков веб-сервера.

Заранее спасибо за помощь, Гуннар.


person user1105607    schedule 19.12.2011    source источник


Ответы (1)


Вы можете указать загрузчик классов для использования в качестве дополнительного параметра в getBundle. В веб-приложении это, скорее всего, будет загрузчик класса контекста текущего потока:

ClassLoader cl = Thread.currentThread().getContextClassLoader();
ResourceBundle rb = ResourceBundle.getBundle(textproperties, locale, cl);
person Jörn Horstmann    schedule 19.12.2011
comment
Здравствуйте Йорн, спасибо за вашу помощь. Теперь я могу получить доступ к файлу свойств. - person user1105607; 19.12.2011