2009-10-13 3 views
0

У меня есть приложение, которое я разработал. В настоящее время он развертывается со всеми его конфигурационными файлами (в том числе log4j.properties, как используется некоторыми внешними библиотеками, которые я использую) в том же каталоге, что и в моем приложении.Проблема с упаковкой Java

Итак, у меня есть bin Дира, содержащий мой app.jar, плюс несколько файлов свойств, плюс lib реж со всеми своими внешними баночки. Внешние банки указаны в пути к классам, указанном в файле манифеста app.jar.

Теперь имущие постановили, что новая структура будет bin режа только с app.jar, с lib режем на тот же уровень (т.е. ../lib, по отношению к bin) для внешней баночки и каталог ../etc для конфигурации файлы.

Прост достаточно, подумал я, - я изменил все пути пути от ./lib/<jarname> до ../lib/<jarname> и добавил ../etc к пути к классам.

Проблема заключается в том, что теперь любые банки, которые используют log4j не работают - они не видят log4j.properties файл - потому что, как я подозреваю, путь к классам для app.jar не влияет на пути к классам для внешних банок (возможно ?), и раньше они находили это просто потому, что находились в '.'.

Любые мысли?

ответ

1

Вы можете поместить log4j.properties в любом месте, пока оно находится в пути к классам. поэтому, как предложил @skaffman, поместите файл свойств log4j в каталог etc, который уже находится в вашем пути к классам.

Альтернативой использованию PropertyConfigurator является установка этого свойства syetm во время запуска вашего приложения.

-Dlog4j.configuration=log4j.properties 
0

Итак, проблема в том, что Log4J теперь больше не находит файл конфигурации (log4j.properties)?

Насколько я знаю, Log4J по умолчанию выглядит в каталогах, которые находятся в пути к файлу log4j.properties. Попробуйте добавить каталог ../etc в путь к классам в файле манифеста вашего JAR.

См. Также Default Initialization Procedure в руководстве Log4J, в котором объясняется, как Log4J ищет файл конфигурации и как вы можете изменить это.

0

log4j.properties должен быть где-то в пакете по умолчанию, который в вашем случае, вероятно, означает в JAR-файле где-то в корневом каталоге этого файла jar.

Лучшим решением было бы вставить его в каталог etc, а затем явно настроить log4j для его использования из этого места. Вы можете сделать это с помощью PropertyConfigurator - вызвать, что при запуске приложения, по имени файла, URL-адресу, что вам больше всего подходит.

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