[
https://issues.apache.org/jira/browse/LOG4J2-1051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15489597#comment-15489597
]
Lukasz Lenart commented on LOG4J2-1051:
---------------------------------------
Problem is here
{code:java}
/**
* Constructs an Interpolator using a given StrLookup and a list of
packages to find Lookup plugins in.
*
* @param defaultLookup the default StrLookup to use as a fallback
* @param pluginPackages a list of packages to scan for Lookup plugins
* @since 2.1
*/
public Interpolator(final StrLookup defaultLookup, final List<String>
pluginPackages) {
this.defaultLookup = defaultLookup == null ? new MapLookup(new
HashMap<String, String>()) : defaultLookup;
final PluginManager manager = new PluginManager(CATEGORY);
manager.collectPlugins(pluginPackages);
final Map<String, PluginType<?>> plugins = manager.getPlugins();
for (final Map.Entry<String, PluginType<?>> entry : plugins.entrySet())
{
try {
final Class<? extends StrLookup> clazz =
entry.getValue().getPluginClass().asSubclass(StrLookup.class);
lookups.put(entry.getKey(), ReflectionUtil.instantiate(clazz));
} catch (final Exception ex) {
LOGGER.error("Unable to create Lookup for {}", entry.getKey(),
ex);
}
}
}
{code}
this constructor doesn't follow the safe logic in second constructor {{public
Interpolator(final Map<String, String> properties)}}
> NoClassDefFoundError when starting app on Google App Engine
> -----------------------------------------------------------
>
> Key: LOG4J2-1051
> URL: https://issues.apache.org/jira/browse/LOG4J2-1051
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Environment: master branch, JDK7, Google App Engine, Apache Struts 2.5
> Reporter: Lukasz Lenart
> Fix For: 2.4
>
>
> I have an app that uses
> - log4j-api
> - log4j-core
> - log4j-web
> and after deploying it to GAE I see such exception in the logs
> {noformat}
> 2015-06-10 23:01:05.768
> Uncaught exception from servlet
> java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.logging.log4j.core.util.Loader
> at
> org.apache.logging.log4j.core.lookup.Interpolator.<init>(Interpolator.java:114)
> at
> org.apache.logging.log4j.core.config.AbstractConfiguration.<init>(AbstractConfiguration.java:105)
> at
> org.apache.logging.log4j.core.config.NullConfiguration.<init>(NullConfiguration.java:30)
> at
> org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:62)
> at
> org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:145)
> at
> org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:70)
> at
> org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:57)
> at
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:142)
> at
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:42)
> at org.apache.logging.log4j.LogManager.getContext(LogManager.java:175)
> at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:426)
> at
> org.apache.struts2.tiles.StrutsTilesListener.<clinit>(StrutsTilesListener.java:50)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
> at java.lang.Class.newInstance(Class.java:375)
> at
> org.mortbay.jetty.webapp.WebXmlConfiguration.newListenerInstance(WebXmlConfiguration.java:650)
> at
> org.mortbay.jetty.webapp.WebXmlConfiguration.initListener(WebXmlConfiguration.java:631)
> at
> org.mortbay.jetty.webapp.WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java:368)
> at
> org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289)
> at
> org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222)
> at
> org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180)
> at
> org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1247)
> at
> org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
> at
> org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
> at
> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
> at
> com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:199)
> at
> com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:174)
> at
> com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134)
> at
> com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:527)
> at
> com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:437)
> at
> com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:444)
> at
> com.google.tracing.CurrentContext.runInContext(CurrentContext.java:230)
> at
> com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:308)
> at
> com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:300)
> at
> com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:441)
> at
> com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
> at java.lang.Thread.run(Thread.java:745)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]