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

Matt Sicker commented on LOG4J2-1753:
-------------------------------------

The main confusion here is that in a normal OSGi environment, log4j-api and 
log4j-core would have different ClassLoaders, and the ClassLoader set to the 
current thread (the TCCL) tends to be set to seemingly random ClassLoaders 
based on what code is executing. Generally, you want to get the ClassLoader 
from a class in the jar you're looking at, but that's not always possible.

> java.lang.ClassNotFoundException: 
> org.apache.logging.log4j.core.util.ExecutorServices when running the OSGi 
> tests
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: LOG4J2-1753
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1753
>             Project: Log4j 2
>          Issue Type: Bug
>            Reporter: Ludovic HOCHET
>         Attachments: patch-log4j2-1753.diff
>
>
> When running the OSGi tests for LOG4J2-1664, a new 
> java.lang.ClassNotFoundException: 
> org.apache.logging.log4j.core.util.ExecutorServices (for both Felix and 
> Equinox) appeared recently.
> Here is the Felix stack trace:
> {noformat}
> ERROR StatusLogger Failed to preload ExecutorServices class.
>  java.lang.ClassNotFoundException: *** Class 
> 'org.apache.logging.log4j.core.util.ExecutorServices' was not found because 
> bundle org.apache.logging.log4j.api [1] does not import 
> 'org.apache.logging.log4j.core.util' even though bundle 
> org.apache.logging.log4j.core [2] does export it. To resolve this issue, add 
> an import for 'org.apache.logging.log4j.core.util' to bundle 
> org.apache.logging.log4j.api [1]. ***
>       at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2011)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:264)
>       at 
> org.apache.logging.log4j.util.LoaderUtil.loadClass(LoaderUtil.java:141)
>       at 
> org.apache.logging.log4j.core.LoggerContext.<clinit>(LoggerContext.java:74)
>       at 
> org.apache.logging.log4j.core.osgi.BundleContextSelector.locateContext(BundleContextSelector.java:67)
>       at 
> org.apache.logging.log4j.core.osgi.BundleContextSelector.getContext(BundleContextSelector.java:53)
>       at 
> org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:57)
>       at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:147)
>       at 
> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
>       at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
>       at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at 
> org.apache.logging.log4j.osgi.tests.AbstractLoadBundleTest.log(AbstractLoadBundleTest.java:100)
>       at 
> org.apache.logging.log4j.osgi.tests.AbstractLoadBundleTest.testSimpleLogInAnOsgiContext(AbstractLoadBundleTest.java:279)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>       at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>       at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>       at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>       at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>       at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
>       at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>       at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>       at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>       at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
>       at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
>       at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
>       at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
>       at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
>       at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
>       at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
>       at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
>       at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
>       at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
>       at 
> org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
>       at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
>       at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
> Caused by: java.lang.ClassNotFoundException: 
> org.apache.logging.log4j.core.util.ExecutorServices not found by 
> org.apache.logging.log4j.api [1]
>       at 
> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558)
>       at 
> org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
>       at 
> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998)
>       ... 45 more
> {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

Reply via email to