Где ResourceBundle.getBundle ("ResourceFile", новый Locale ("us", "US")) ищет файл? - PullRequest
7 голосов
/ 26 февраля 2010

Я использую Eclipse и пытаюсь создать простую тестовую программу, пробуя наш ResourceBundle с несколькими различными файлами Файл правильно назван как ResourceFile_us_US.properties. Но я получаю исключение при вызове getBundle (), потому что он, очевидно, не может найти файл. Где он должен быть расположен, чтобы его можно было найти?

Ответы [ 4 ]

14 голосов
/ 14 октября 2012

Вы знаете, что Java ищет файл свойств в определенной локали. Вы можете быть озадачены, почему Java продолжает жаловаться, что не может найти файл свойств, который находится прямо там. Несколько вещей, которые следует иметь в виду при отладке ошибок этого типа:

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

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

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

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

Подробнее: Не удается найти пакет для базового имени com ... config, locale zh_CN

Приветствие.

7 голосов
/ 13 апреля 2016

Если вы создаете пакет resources и помещаете файл hello_en_US.properties внутри него, который имеет содержание:

привет = Hello World !!

Вы можете распечатать содержимое привет, используя следующий код:

package localization;

import java.util.Locale;
import java.util.ResourceBundle;

public class ResourceBundleDemo {

public static void main(String[] args) {

    Locale en_US = new Locale("en", "US");
    ResourceBundle bundle = ResourceBundle.getBundle("resources.hello", en_US);

    // print the value of the key "hello"
    System.out.println("" + bundle.getString("hello"));

  }
}
1 голос
/ 10 августа 2015

Один из двух:

  1. / SRC / ресурсы Убедитесь, что вы указали локаль в имени файла комплекта ресурсов. например, для Зимбабве это будет ResourceBundle_en_ZW.properties, и вы загрузите его как ResourceBundle resourceBundle = ResourceBundle.getBunndle ("ResourceBundle", Locale.getDefault ());

  2. В вашем классе. Убедитесь, что переменная окружения calsspath установлена ​​

1 голос
/ 26 февраля 2010

Я считаю, что это просто выглядит в classpath.

...