куда поместить файлы .properties в проект Eclipse? - PullRequest
14 голосов
/ 18 апреля 2009

У меня очень простой тест файла свойств, который я пытаюсь заставить работать: (ниже - 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

Я что-то не так делаю?

Ответы [ 5 ]

28 голосов
/ 18 апреля 2009

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

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

См. Документы для ResourceBundle.getBundle(String, Locale, ClassLoader) для получения дополнительной информации.

13 голосов
/ 07 июня 2012

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

2 голосов
/ 08 декабря 2010

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

1 голос
/ 20 октября 2011

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

0 голосов
/ 18 апреля 2009

Ага, спасибо большое. Это также работает.

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);
        }
    }
}
...