2011-12-26 3 views

ответ

1

Это зависит от того, как вы загружаете файл свойств. Рассмотрим, чтобы загрузить свои свойства с помощью:

InputStream in = getClass().getResourceAsStream("/log4j.properties"); 

, а затем использовать Properties.load (в)

Это должно справиться с ситуацией, когда файл свойств физически находится в банку Good Luck!

+0

спасибо, но у меня есть ошибка в функции 'getclass()': нестатический метод getClass() не может ссылаться на статический контекст – zeevblu

+0

Какова ваша ошибка, getClass() будет работать, если вы не в статическом методе. –

+0

Если вы находитесь внутри основного метода (который является статическим), а ваш класс называется MyClass (например), попробуйте следующим образом: MyClass.class.getResourceAsStream (...) –

1

Когда вы упаковываете свойства внутри файла jar, вы должны использовать загрузчик классов, чтобы найти файл, так как он больше не отображается в качестве файла.

Если файл свойств инсайдерской файл банку в корень файла банку, то ответ приведенный выше, что вы будете использовать:

Properties p = new Properties(); 
InputStream is = MyClass.class.getResourceAsStream("/config.properities"); 
if(is != null) 
{ 
    p.load(is); 
} 

, который должен вернуть InputStream, что вы можете перейти на класс свойств для загрузки. Если этот вызов возвращает NULL, вам нужно посмотреть, где находится файл свойства относительно корня файла jar.

Смежные вопросы