java.util.MissingResourceException - PullRequest
       19

java.util.MissingResourceException

6 голосов
/ 14 апреля 2010

Я получаю исключение при запуске приложения. Это приложение для чтения файла abc.properties,

Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name abc, locale en_US
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:853)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:822)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:566)
    at com.ibm.dst.DailyExtract.getResourceBundle(DailyExtract.java:104)
    at com.ibm.dst.DailyExtract.main(DailyExtract.java:131)

Файл abc.properties находится в рабочей области. Я использую RSA7 в качестве IDE, есть ли проблемы с настройкой? любые предложения приветствуются .....

Заранее большое спасибо

Ответы [ 6 ]

12 голосов
/ 14 апреля 2010

Следуйте подсказкам в этом посте и посмотрите, не допустили ли вы одну из тех ошибок, которые могли бы быть (копия вставлена ​​по ссылке):

  1. Эти файлы свойств ресурсов загружаются загрузчиком классов, аналогично классам Java. Поэтому вам нужно включить их в ваш путь к классам во время выполнения.

  2. Эти ресурсы имеют полное имя ресурса, похожее на полное имя класса, отрывок, который вы не можете импортировать в свой исходный файл Java. Зачем? потому что его имя принимает форму строки.

  3. ResourceBundle.getBundle("config") говорит загрузчику классов загрузить ресурс с именем «config» с пакетом по умолчанию (то есть без пакета). Это НЕ означает ресурс в текущем пакете, который имеет ссылочный класс.

  4. ResourceBundle.getBundle("com.cheng.scrap.config") говорит загрузчику классов загрузить ресурс с именем "config" с пакетом "com.cheng.scrap". Его полностью квалифицированное имя ресурса - "com.cheng.scrap.config"

2 голосов
/ 26 июля 2016

Просто скопируйте файл ресурсов туда, где находятся ваши файлы классов.

В моем случае мой каталог был:

bin 
  - com 
     - brookf 
        - all my packages here. 

скопируйте ваш файл ресурсов в папку bin.

2 голосов
/ 21 ноября 2012

Вам просто нужно добавить имя пакета при получении файла

Например, если имя вашего свойства "ABC.properties" в пакете a.b.c, то приведенный ниже код будет отлично работать

ResourceBundle labels = ResourceBundle.getBundle("a.b.c.ABC");
1 голос
/ 22 октября 2014

У меня была та же проблема сегодня, и мне потребовалось некоторое время, пока я не нашел исправление (я использую Eclipse в качестве IDE). Папка моего проекта содержит * .properties-Files по следующему пути:

project/src/strings

Поскольку строки - это подпапка src, а src уже находится в пути сборки проекта (см. Окно свойств), все, что мне было нужно, это добавить шаблон включения для * .properties-Files:

**/*.properties

Уже должен быть шаблон включения для * .java-файлов (** / *. Java)

Может быть, есть что-то похожее для вашей IDE

1 голос
/ 14 апреля 2010

Загрузка файла свойств для локализации также зависит от именования пакетов. Если вы поместите свой файл свойств в пакет типа org.example.com.foobar и загрузите его просто по имени abc, вы также должны добавить префикс org.example.com.foobar. Если у вас есть свойства в другом месте (например, в корневом каталоге или в другом подкаталоге), вы должны изменить либо имя для загрузки, либо путь к классу.

Я отлично запускаю размещение файла свойств в том же месте, где находится файл .java, и использую что-то вроде

private static ResourceBundle RES = ResourceBundle.getBundle(NameOfTheCurrentClass.class.getCanonicalName());
0 голосов
/ 14 апреля 2010

Файл в вашем classpath? Если это так, попробуйте переименовать его в abc_en_US.properties

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