[ 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: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org