I am trying to use Log4j2 in my webapp which runs in Tomcat which has its
Security policy enabled.
While initial load of Log4j2 via Commons logging bridge I keep getting -
java.lang.NoClassDefFoundError: Could not initialize class
org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup
I have narrowed it down to the initialisation code of the class
static {
final List<String> argsList =
ManagementFactory.getRuntimeMXBean().getInputArguments();
JMX_SINGLETON = new
JmxRuntimeInputArgumentsLookup(MapLookup.toMap(argsList));
}
Where this code needs particular security permission to be enabled. Any
idea which permission does this need in the Tomcats catalina.policy file?
Following is the StackTrace -
java.lang.NoClassDefFoundError: Could not initialize class
org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at
org.apache.logging.log4j.core.util.ReflectionUtil.instantiate(ReflectionUtil.java:185)
at
org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:65)
at
org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:346)
at
org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:161)
at
org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:359)
at
org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:420)
at
org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:138)
at
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
at
org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:41)
at
org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
at
org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:102)
at
org.apache.logging.log4j.jcl.LogAdapter.getContext(LogAdapter.java:39)
at
org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:42)
at
org.apache.logging.log4j.jcl.LogFactoryImpl.getInstance(LogFactoryImpl.java:40)
at
org.apache.logging.log4j.jcl.LogFactoryImpl.getInstance(LogFactoryImpl.java:55)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:655)
at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:282)
at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4994)