2010-07-23 1 views
2

Я строю проект с муравьем и во время сборки. Я хотел бы связать файл log4j.xml непосредственно в .jar, чтобы упростить распределение. Мне удалось добавить файл в .jar, но он, похоже, не распознается.Как получить .jar для распознавания и использования связанного файла log4j.xml?

Что нужно сделать, чтобы файл был распознан и использован log4j? Я новичок в Java, поэтому четкое описание с примерами, если это возможно, было бы замечательным!

ответ

1

Это как-то работает.

static // loads before anything else can 
{ 
    /* 
    * If log4j.configuration system property isn't set, 
    * then assume I'm inside a jar and configure 
    * log4j using the config file that shipped in the jar. 
    */ 
    if (System.getProperty("log4j.configuration") == null) 
    { 
     URL url = ClassLoader.getSystemResource("log4j.xml"); 
     DOMConfigurator.configure(url); 
    } 
} 
+0

как-то? Ты имеешь в виду? –

0

Как вы используете приложение?

Пока JAR находится на пути к классу, любой содержащийся в нем файл также находится в пути к классам. Другими словами, log4j не должен иметь проблем при поиске some.jar!log4j.xml, , еслиsome.jar находится на пути к классам для начала.

Есть ли другие файлы конфигурации log4j, которые были получены из других мест в пути к классам? Вы можете добавить -Dlog4j.debug к запуску приложения, чтобы log4j распечатывал отладочную информацию о том, какой файл конфигурации используется. Очень возможно, что сначала создается другой файл конфигурации, связанный в другом JAR.

+0

'java -jar myapp.jar'; Я буду предоставлять один файл jar нашим пользователям, поэтому все включено в этот файл jar. –

+0

Я считаю, что вам нужно явно включить log4j.xml в атрибут Classpath: 'в файле' MANIFEST.MF'. Запуск процессов с помощью «-jar» немного отличается от «нормального» –

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