Jar не может найти файл конфигурации log4j, который настроен с помощью manifest.mf - PullRequest
0 голосов
/ 11 декабря 2011

Я хочу прочитать файл log4j.xml, который находится вне папки jar внутри и т. Д. Поэтому я создал файл манифеста следующим образом

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_24-b07 (Sun Microsystems Inc.)
Built-By: Administrator
Main-Class: com.him.LogPrinter
Class-Path: ./lib/log4j.jar ./etc/log4j.xml

Мой файл класса выглядит следующим образом

package com.him;
import org.apache.log4j.Logger;
public class LogPrinter {

/**
 * @param args
 */
public static Logger logger = Logger.getLogger(LogPrinter.class);
public static void main(String[] args) {
    logger.debug("I am a debug message");
    logger.info("i am a info message");
    logger.error("i am a error message");
    logger.warn("i am a warn message");
    System.out.println("hello");
}

}

когда я запускаю файл jar, используя

java -jar myapp.jar

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

Когда я помещаю файл log4.xml в файл jar, он дает требуемый вывод.

Пожалуйста, помогите. Я не могу понять, почему файл конфигурации не выбран, даже если он находится в classpath, настроенном с использованием файла manifest.mf. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 12 декабря 2011

Вам нужно будет указать каталог, а не файл;как обычный путь к классам.

Я не уверен, что мне нравится эта идея;Я думаю, что было бы удобнее указать путь к файлу конфигурации в командной строке.

0 голосов
/ 12 декабря 2011

Log4J ищет файл log4j.xml в корне пути к классам.Это означает, что вы должны переместить его на один уровень вверх из папки etc, где он находится сейчас, и исправить файл манифеста.Я полагаю, что вы вообще не должны упоминать log4j.xml в манифесте вообще.Просто упакуйте его в свою банку.

...