Правильное чтение ресурсов в Eclipse с Java - PullRequest
2 голосов
/ 29 июля 2010

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

<project>/resource/text/translation_en.properties

С помощью следующего кода (в статическом контексте никакие объекты не инициализируются от меня прямо сейчас):

<This_Classes_name>.class.getResourceAsStream("/resource/text/translation_en.properties");

Почему я загружаю его таким образом?Во-первых, я использую класс Object, потому что getResourceAsStream () не является статичным, и я узнал через поиск в Google, что должен использовать этот метод для загрузки моего файла свойств.Затем я использую / что Java не выглядит относительно моего Main.java, но Project.Тем не менее, я все равно получаю нулевое значение, используя это.

Как это может не работать, если в этом месте есть файл?Что здесь делает Java?

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

Ресурсы должны быть в Classpath. Один из вариантов - скопировать всю папку / resource в вашу исходную папку. Еще один вариант - создать новую исходную папку, содержащую только ресурсы, и переместить туда папку / resource. Не делайте папку / resource исходной папкой, если вы не хотите использовать getResourceAsStream("/text/translation_en.properties");

1 голос
/ 29 июля 2010

getResourceAsStream используется, потому что он может читать файлы из всего пути к классам (включая файлы в JAR, которые находятся в пути к классам)

Я думаю, что метод принимает имя файла как аргумент без каких-либо путей, в вашем примере загрузчик классов будет искать файл с именем "/resource/text/translation_en.properties", не интерпретируя первую часть как путь. попробуйте загрузить так:

this.getClass().getClassLoader().getResourceAsStream("translation_en.properties");

Кроме того, вы должны убедиться, что файл действительно находится в пути к классам. С maven и eclipse должна быть папка "target", в которой есть все ваши сгенерированные классы. Эта папка добавляется в путь к классам при запуске проекта в Eclipse.

Надеюсь, это помогло ....

...