Log4j2の初期化エラー



以下のエラーが発生することがあるのだが、なぜかEclipseの開発環境では発生せず、jarにまとめて実行させた時にだけ発生する。

2019-11-01 16:04:25,815 main ERROR LogManager returned an instance of org.apache.logging.log4j.simple.SimpleLoggerContextFactory which does not implement org.apache.logging.log4j.core.impl.Log4jContextFactory. Unable to initialize Log4j.
Exception in thread "main" java.lang.NullPointerException
    at nato.base.clog.CLogConfig.internalInit(CLogConfig.java:153)
    at nato.base.clog.CLogConfig.initialize(CLogConfig.java:167)
    at nato.base.jettyApp.JettyApp.main(JettyApp.java:17)

解消方法は以下のようだ。

    System.setProperty("log4j2.loggerContextFactory", 
        "org.apache.logging.log4j.core.impl.Log4jContextFactory");

つまり、勝手にSimpleLoggerContextFactoryを使用してしまうので、これを強制的にLog4jContextFactoryに戻してやる。

しかし、なぜEclipse開発環境では正しいものが使用され、実行環境ではSimpleLoggerContextFactoryが使われてしまうのかは、全くの謎。開発・実行環境共にLog4j関連の設定ファイル等も一切いれておらず、何の変わりも無いはずなのだが。。。