2010-11-06 2 views
0

У меня есть приложение, содержащееся в A.JAR. Эта банка имеет несколько зависимостей, поэтому они указаны в манифесте как «lib/B.JAR lib/C.JAR lib/D.JAR». У меня есть установочный каталог с A.JAR, и под ним у меня есть каталог lib с тремя другими.Проблема с инкрементной настройкой класса пути при запуске файла jar

Я захожу в свою папку установки и запускаю «java -jar A.JAR» для запуска приложения и запускает его. Однако он ищет log4j.properties для настройки log4j. Теперь, насколько я знаю, log4j.properties должны находиться в пути к классам.

Теперь предположим, что я хочу запустить несколько экземпляров A.JAR, но с различными свойствами log4j. Поэтому я устанавливаю 4 установочных каталога (inst1, inst2, ...), и я поместил A.JAR, настроенные log4j.properties и каталог lib в каждом из них.

  1. Это правильный путь (забудьте о самом копировании, я могу сделать это с символическими ссылками)? Может быть, есть способ сообщить log4j искать свойства в определенном месте, используя некоторое определение (-D) во время выполнения?
  2. Если то, что я описал, является хорошей настройкой, как я могу ее запустить? Java не «ломает» log4j.properties как часть своего пути к классам. запуск «java -classpath. -jar A.JAR» тоже не помог.

ответ

4

Системное свойство log4j.configuration можно использовать для определения файлов свойств, которые вы хотите использовать log4j.

Простой пример файла в какой-нибудь каталог будет:

java -Dlog4j.configuration=file:/c:/foobar.properties YOUR CLASS PATH -jar JAR FILE 

Для получения дополнительной информации обратитесь к documentation. Особенно проверьте раздел «Процедура инициализации по умолчанию».

+0

Также обратите внимание на переключатель -Dlog4j.debug. Полезно знать, где он ищет. – mschonaker

+0

+1 - это правильный подход, хотя OP может захотеть создать некоторый сценарий оболочки для запуска приложения с различными конфигурациями протоколирования. –

+0

@Faisel - Спасибо, я буду использовать его. –

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