Я пытаюсь выполнить банку с файлом log4j.xml в файловой системе вне банки как так:
java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=log4j.xml argToJar1 argToJar2
Я также попробовал:
java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=/opt/companyName/pathToJar/log4j.xml argToJar1 argToJar2
log4j.xml является файлом, находится в том же каталоге как банка (/opt/companyName/pathToJar/), все же я все еще получаю стандартное предупреждающее сообщение:
log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.
Действительно ли возможно иметь файл конфигурации вне банки, или я должен упаковать его с банкой?
TIA
При использовании переключателя -jar
для запуска исполняемого файла jar путь к классам получается из манифеста файла jar. Переключатель -cp
, если он задан, игнорируется.
Ответ Джеффа Стори будет самым простым решением. В качестве альтернативы вы можете добавить атрибут Class-Path
в манифест файла jar .
ИЗМЕНИТЬ
Попробуйте включить отладку log4j и сделать путь к log4j.xml
полным URL. Например:
java -Dlog4j.debug -Dlog4j.configuration=file:/path/to/log4j.xml -jar ...
У вас попробовал java -Dlog4j.configuration = / path / to / log4j.xml -jar
«-jar» использует только путь к классам внутри исполняемого jar-файла, а -cp игнорируется. Добавление "." к пути к классам в исполняемом jar-файле должен разрешить загрузку log4j.xml.
это работает:
java -jar -Dlog4j.configuration="file:d:\log4j.xml" myjar.jar