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

Jonathan Hanba commented on LOG4J2-920:
---------------------------------------

There is a correct way to fix this issue and it is not by adding a generic 
<DynamicImport-Package> field to the pom.xml file.Two lines have to be added to 
the pom.xml file for the log4j-api OSGi bundle. Basically it is not properly 
wired up to the log4j-core OSGi bundle (in other words it is not importing the 
packages needed from log4j-core). The log4j-api pom.xml file has to include 
these two lines under <Import-Package>

org.apache.logging.log4j.core.osgi;resolution:=runtime,
org.apache.logging.log4j.core.lookup;resolution:=runtime,

So the entire <Import-Package> in the log4j-api pom.xml file looks like this:

<Import-Package>
  org.apache.logging.log4j.core.osgi;resolution:=runtime,
  org.apache.logging.log4j.core.lookup;resolution:=runtime,
  sun.reflect;resolution:=optional,
  *
</Import-Package>

> ClassNotFoundException for BundleContextSelector when initialising in an OSGi 
> environment
> -----------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-920
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-920
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: API
>    Affects Versions: 2.1
>         Environment: Apache Felix, Java 8
>            Reporter: Ludovic HOCHET
>         Attachments: LOG4J2-920.zip, patch.diff, patch2.diff
>
>
> When initialising Log4J2 in an Apache Felix environment, I get the following 
> exception: 
> ERROR StatusLogger Unable to create context 
> org.apache.logging.log4j.core.osgi.BundleContextSelector 
> java.lang.ClassNotFoundException: 
> org.apache.logging.log4j.core.osgi.BundleContextSelector not found by 
> org.apache.logging.log4j.api [78]
>     at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
>     at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
>     at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)
>     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>     at java.lang.Class.forName0(Native Method)
>     at java.lang.Class.forName(Class.java:260)
>     at org.apache.logging.log4j.util.LoaderUtil.loadClass(LoaderUtil.java:117)
>     at 
> org.apache.logging.log4j.util.LoaderUtil.newInstanceOf(LoaderUtil.java:136)
>     at 
> org.apache.logging.log4j.util.LoaderUtil.newCheckedInstanceOf(LoaderUtil.java:163)
>     at 
> org.apache.logging.log4j.core.util.Loader.newCheckedInstanceOf(Loader.java:311)
>     at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.createContextSelector(Log4jContextFactory.java:96)
>     at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.<init>(Log4jContextFactory.java:54)
>     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:408)
>     at java.lang.Class.newInstance(Class.java:438)
>     at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:96)
> [...]
> Due to a missing import of the org.apache.logging.log4j.core.osgi package in 
> the API OSGi metadata in its pom



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to