Java отсутствует ресурс - PullRequest
2 голосов
/ 28 июня 2010

Я работаю над приложением J2SE (например, в стиле киоска), которое интенсивно использует пакеты ресурсов и i18n.Это включает в себя не только переводы, но и форматирование и другие проблемы i18n.У нас есть собственная логика для гомогенизации загрузки ресурсов, но она довольно проста.У меня есть проблема MissingResourceException.Даже если я обойду пользовательскую логику, установленную в приложении, и вызову напрямую в класс ResourceBundle, чтобы загрузить этот конкретный пакет, Java не сможет загрузить его для определенной локали.Вот корневое исключение с трассировкой стека:

Caused by: java.util.MissingResourceException: Can't find bundle for base name version1/FormatResource, locale en_GB
 at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:836)
 at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:726)
 at java.util.ResourceBundle.getBundle(ResourceBundle.java:576)

Пакет ресурсов находится в каталоге "version1", расположенном в папке классов в Eclipse, которая находится в верхней части моего пути к классам.Эта папка содержит другие пакеты ресурсов, которые нормально загружаются с использованием той же логики загрузки пакетов ресурсов, а также многочисленные XML-конфигурации, которые также хорошо загружаются при загрузке с помощью загрузчика системного класса.Соответствующие файлы для пакета ресурсов:

FormatResource_cs_CZ.properties
FormatResource_en_GB.properties
FormatResource_fr_BE.properties
FormatResource_fr_FR.properties
FormatResource_hu_HU.properties
FormatResource_nl_BE.properties
FormatResource_nl_NL.properties
FormatResource_pl_PL.properties
FormatResource_sk_SK.properties

Когда мое приложение запускается в польском языке, все в порядке.Если я захожу как пользователь с польским языком, все в порядке.Если я войду в систему как британский пользователь, приложение попытается загрузить все пакеты en_GB (переводы, средства форматирования и т. Д.) И завершится сбоем в этом пакете.Он не может найти FormatResource_en_GB.properties, что явно указывается в пути к классам: приведенный выше список файлов является копией и вставкой из командной строки.

Еще одна проблема, которая мне кажется интересной, заключается в том, что если я определю FormatResource_en_US.propertiesв каталоге version1 даже файл FormatResource_pl_PL.properties не загружается и приложение даже не запускается.

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 28 июня 2010

Мне интересно, что вы упоминаете, когда ставите США вверху списка, что он загружает этот, а не какой-либо другой (аналогично тому, когда польский был наверху).Вы переключаете язык при поиске следующего пакета ресурсов?или он удерживает значение по умолчанию, установленное при первом запуске программы?

Другая мысль связана с загрузчиками классов .... всякий раз, когда я сталкиваюсь с файлами свойств, которые не находятся должным образом (даже если они находятся там, где я ожидаюих), мне пришлось посмотреть, как загрузчик классов загружает вещи.Обычно это отличалось от того, что я подозревал (например, дубликат файла в другом месте или несколько загрузчиков классов, конфликтующих друг с другом).

Просто две мысли, чтобы попробовать.

0 голосов
/ 28 июня 2010

Я бы попробовал проверить наличие проблем с файлами и операционной системой, таких как разрешения.

Переименуйте ваш FormatResource_en_GB.properties, чтобы он не мешал, и скопируйте один из рабочих FormatResource файлов на его место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...