Где поместить файлы .properties в проект Eclipse?

У меня очень простой файл с файлами свойств. Я пытаюсь работать: (следующее TestProperties.java)

package com.example.test;

import java.util.ResourceBundle;

public class TestProperties {
    public static void main(String[] args) {
        ResourceBundle myResources =
              ResourceBundle.getBundle("TestProperties");
        for (String s : myResources.keySet())
        {
            System.out.println(s);
        }
    }

}

и TestProperties.properties в том же каталоге:

something=this is something
something.else=this is something else

который я также сохранил как TestProperties_en_US.properties

Когда я запускаю TestProperties.java из Eclipse, он не может найти файл свойств:

java.util.MissingResourceException: 
Can't find bundle for base name TestProperties, locale en_US

Я что-то делаю неправильно?

Ответ 1

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

ResourceBundle myResources =
          ResourceBundle.getBundle("com.example.test.TestProperties");

Дополнительную информацию см. в документах для ResourceBundle.getBundle(String, Locale, ClassLoader).

Ответ 2

НЕ помещайте свои файлы пробиотиков в свою папку src! Очевидно, что это работает, но в основном это НЕ, как вы должны подходить к своим проблемам. Создайте новую папку в своем проекте, например папку "Ресурсы", добавьте ее в путь к классам в свойствах проекта и поместите туда все файлы, отличные от .java.

Ответ 3

Я как раз пытался решить эту проблему, я обнаружил, что вы должны обновить список файлов Eclipse, прежде чем пытаться запустить проект. Затем вы можете иметь свои файлы в базовом каталоге и использовать их как обычно.

Ответ 4

поместите файл TestProperties_en_US.properties(собственный) в папку src, а затем запустите программу, в которой он будет работать

Ответ 5

Ага, спасибо кучу. Это также работает.

package com.example.test;

import java.util.ResourceBundle;

public class TestProperties {
    public static void main(String[] args) {
        ResourceBundle myResources =
           ResourceBundle.getBundle(TestProperties.class.getCanonicalName());
        for (String s : myResources.keySet())
        {
            System.out.println(s);
        }
    }
}