2

After updating log4j from 2.17.1 to 2.20.0 for a RCP application (OSGI!) we are getting lot's of exeptions on start-up.

For some years we were happily using the workrounds for OSGI mentioned in

Looking at the log4j2 source code in github, especially the new OsgiServiceLocator.java I can see that there are substantial changes regarding OSGI.

Unfortunately I cannot find any information about how to get this working for an RCP application.

Any ideas?

Exceptions:

ERROR StatusLogger Unable to load OSGI services for service class org.apache.logging.log4j.spi.Provider
 java.lang.NullPointerException: Cannot invoke "org.osgi.framework.BundleContext.getServiceReferences(java.lang.Class, String)" because "ctx" is null
    at org.apache.logging.log4j.util.OsgiServiceLocator.loadServices(OsgiServiceLocator.java:61)
    at org.apache.logging.log4j.util.ServiceLoaderUtil.loadServices(ServiceLoaderUtil.java:92)
    at org.apache.logging.log4j.util.ServiceLoaderUtil.loadServices(ServiceLoaderUtil.java:77)
    at org.apache.logging.log4j.util.ProviderUtil.<init>(ProviderUtil.java:67)
    at org.apache.logging.log4j.util.ProviderUtil.lazyInit(ProviderUtil.java:145)
    at org.apache.logging.log4j.util.ProviderUtil.hasProviders(ProviderUtil.java:129)
    at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:90)

ERROR StatusLogger Unable to load OSGI services for service interface org.apache.logging.log4j.core.util.ContextDataProvider
 java.lang.NullPointerException: Cannot invoke "org.osgi.framework.BundleContext.getServiceReferences(java.lang.Class, String)" because "ctx" is null
    at org.apache.logging.log4j.util.OsgiServiceLocator.loadServices(OsgiServiceLocator.java:61)
    at org.apache.logging.log4j.util.ServiceLoaderUtil.loadServices(ServiceLoaderUtil.java:92)
    at org.apache.logging.log4j.util.ServiceLoaderUtil.loadServices(ServiceLoaderUtil.java:77)
    at org.apache.logging.log4j.core.impl.ThreadContextDataInjector.getServiceProviders(ThreadContextDataInjector.java:77)
    at org.apache.logging.log4j.core.impl.ThreadContextDataInjector.<clinit>(ThreadContextDataInjector.java:64)
    at org.apache.logging.log4j.core.impl.ThreadContextDataInjector$ForDefaultThreadContextMap.<init>(ThreadContextDataInjector.java:93)
    at org.apache.logging.log4j.core.impl.ContextDataInjectorFactory.createDefaultInjector(ContextDataInjectorFactory.java:91)
    at org.apache.logging.log4j.core.impl.ContextDataInjectorFactory.createInjector(ContextDataInjectorFactory.java:71)
    at org.apache.logging.log4j.core.lookup.ContextMapLookup.<init>(ContextMapLookup.java:34)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at org.apache.logging.log4j.core.util.ReflectionUtil.instantiate(ReflectionUtil.java:189)
    at org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:86)
    at org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:105)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.<init>(AbstractConfiguration.java:135)
    at org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:32)
    at org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:74)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)

ERROR StatusLogger Unable to load OSGI services for service interface org.apache.logging.log4j.core.util.WatchEventService
 java.lang.NullPointerException: Cannot invoke "org.osgi.framework.BundleContext.getServiceReferences(java.lang.Class, String)" because "ctx" is null
    at org.apache.logging.log4j.util.OsgiServiceLocator.loadServices(OsgiServiceLocator.java:61)
    at org.apache.logging.log4j.util.ServiceLoaderUtil.loadServices(ServiceLoaderUtil.java:92)
    at org.apache.logging.log4j.util.ServiceLoaderUtil.loadServices(ServiceLoaderUtil.java:77)
    at org.apache.logging.log4j.core.util.WatchManager.<init>(WatchManager.java:137)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.<init>(AbstractConfiguration.java:142)
    at org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:32)
    at org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:74)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)
BetaRide
  • 16,207
  • 29
  • 99
  • 177

1 Answers1

1

That was reported as issue apache/logging-log4j2#1367 and should be solved in the 2.20.1-SNAPSHOT snapshots.

Piotr P. Karwasz
  • 12,857
  • 3
  • 20
  • 43