Мой пример кода так прост:
import org.apache.log4j.Logger;
public class Test {
public static void main(String args[]){
LOG.info("information log line");
}
private final static Logger LOG = Logger.getLogger(Test.class);
}
Он компилируется и работает нормально с log4j 2.11.0.
Для проекта, использующего jacORB, мне нужно поместить файлы jar log4j log4j-core-2.11.0.jar
и log4j-api-2.11.0.jar
в каталог, который добавляется в приложение через -Djava.endorsed.dirs=someDir
. Поэтому, когда я копирую log4j-jars в подкаталог edDir и запускаю приведенный выше пример с
java -Djava.endorsed.dirs=edDir -Dlog4j.configurationFile=log4j.xml Test
Это заканчивается этим выводом:
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.log4j.Logger.getLogger(Logger.java:41)
at Test.<clinit>(Test.java:7)
Caused by: java.lang.NullPointerException
at org.apache.logging.log4j.util.LoaderUtil.getClassLoaders(LoaderUtil.java:115)
at org.apache.logging.log4j.util.ProviderUtil.<init>(ProviderUtil.java:66)
at org.apache.logging.log4j.util.ProviderUtil.lazyInit(ProviderUtil.java:146)
at org.apache.logging.log4j.util.ProviderUtil.hasProviders(ProviderUtil.java:130)
at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:89)
... 2 more
Раньше работал с log4j 2.6. Описанная выше ошибка произошла после обновления до log4j 2.11.0.
Я что-то не так делаю?
Как я могу сделать эту работу снова?
Кстати, JRE составляет 1,7.