You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2018/01/24 05:09:00 UTC

[jira] [Commented] (LOG4J2-2182) NullPointerException at org.apache.logging.log4j.util.Activator.loadProvider(Activator.java:81) in log4j 2.10.0

    [ https://issues.apache.org/jira/browse/LOG4J2-2182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16336915#comment-16336915 ] 

ASF subversion and git services commented on LOG4J2-2182:
---------------------------------------------------------

Commit 31b390e39eeb0ab653491e29c6b9106304f350f6 in logging-log4j2's branch refs/heads/master from [~garydgregory]
[ https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;h=31b390e ]

[LOG4J2-2182] NullPointerException at
org.apache.logging.log4j.util.Activator.loadProvider(Activator.java:81)
in log4j 2.10.0.

> NullPointerException at org.apache.logging.log4j.util.Activator.loadProvider(Activator.java:81) in log4j 2.10.0
> ---------------------------------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-2182
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2182
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Boot
>    Affects Versions: 2.10.0
>            Reporter: liwenxian2017
>            Priority: Major
>
> I use log4j 2.10.0 in project development, But there is Exception occurs:
> 2018-01-11 12:22:13,515 Start Level: Equinox Container: 3a750538-5739-473e-a609-4213b1901911 WARN Problem checking bundle org.apache.logging.log4j.coreconf for Log4j 2 provider. java.lang.NullPointerException
> at org.apache.logging.log4j.util.Activator.loadProvider(Activator.java:81)
> at org.apache.logging.log4j.util.Activator.loadProvider(Activator.java:70)
> at org.apache.logging.log4j.util.Activator.start(Activator.java:113)
> at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:774)
> at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:767)
> at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:724)
> at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:932)
> at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:309)
> at org.eclipse.osgi.container.Module.doStart(Module.java:581)
> at org.eclipse.osgi.container.Module.start(Module.java:449)
> at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1620)
> at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1600)
> at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1571)
> at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1514)
> at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
> at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
> I checked the code, The ERROR occurs in  Activator.class in org.apache.logging.log4j.util in log4j-api-2.10.0.jar:
> 77 private void loadProvider(BundleContext context, BundleWiring bundleWiring)
> 78 {
> 79 + String filter = "(APIVersion>=2.60)";
> 80 + try {
> 81 + Collection<ServiceReference<Provider>> serviceReferences = context.getServiceReferences(Provider.class, "(APIVersion>=2.60)");
> 82 + Provider maxProvider = null;
> 83 + for (ServiceReference<Provider> serviceReference : serviceReferences) {
> 84 + Provider provider = (Provider)context.getService(serviceReference);
> 85 + if ((maxProvider == null) || (provider.getPriority().intValue() > maxProvider.getPriority().intValue()))
> 86 + {  maxProvider = provider; 87 + }
> 88 + }
> 89 + if (maxProvider != null)
> 90 + {  ProviderUtil.addProvider(maxProvider); 91 + }
> 92 + }
> 93 + catch (InvalidSyntaxException ex)
> 94 + { LOGGER.error("Invalid service filter: (APIVersion>=2.60)", ex); 95 + }
> List<URL> urls = bundleWiring.findEntries("META-INF", "log4j-provider.properties", 0);
> for (URL url : urls)
> { ProviderUtil.loadProvider(url, bundleWiring.getClassLoader()); }
> }
> compared with log4j-api-2.8.jar, we can see the codes marked with '+' are the new added codes in 2.10.0, The Exceptions occur because in line 81, context is null. But checking getBundleContext method in OSGI, we can see getBundleContext could return null if this bundle is not in the STARTING, ACTIVE, or STOPPING states or this bundle is a fragment bundle.
> In my case, bundle org.apache.logging.log4j.coreconf is a fragment bundle. So How to handle fragment in this case and let NullPointerException not ccur. Thanks.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)