[
https://issues.apache.org/jira/browse/FELIX-2479?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Richard S. Hall resolved FELIX-2479.
------------------------------------
Assignee: Richard S. Hall
Fix Version/s: framework-3.2.0
Resolution: Fixed
I committed a fix for this to trunk. It worked in my local test case, but I
didn't test it on the original test case given my limited understanding of Pax
Exam. Please close if satisfied.
> Order-dependent class loading problem when split packages are occurring.
> -------------------------------------------------------------------------
>
> Key: FELIX-2479
> URL: https://issues.apache.org/jira/browse/FELIX-2479
> Project: Felix
> Issue Type: Bug
> Components: Framework
> Affects Versions: framework-3.0.1
> Reporter: Rick McGuire
> Assignee: Richard S. Hall
> Fix For: framework-3.2.0
>
> Attachments: splitpackage.zip
>
>
> This is sort of a complicated scenario, but I've been able to create a
> relatively simple test to recreate this. See the attachment for the project.
> Note that to get this to run using the 3.0.1 Felix framework version, I
> needed to create a private build of the pax exam trunk with a dependency
> change to also pick up the latest pax runner snapshot version.
> This problem showed up for us with the 3.0.1 release, but also appears to be
> in the 3.1.0-SNAPSHOT release. The 2.0.5 release does not have the problem
> and equinox also appears to be handling this correctly. In this scenario, we
> have a bundle with two embedded jar files that also has a Dynamic-Import: *
> header and a Require-Bundle header for another bundle. One of the embedded
> jars uses the same package name as packages defined in the bundle referenced
> by the Require-Bundle, creating a split package situation. The test is
> fairly simple, consisting of just a couple of lines:
> // if this line is commented out, then the second loadClass() call
> will succeed. If
> // this load occurs first, then a NoClassDefFound error results on
> the load for TestClass.
> Class cls1 =
> bundle1.loadClass("org.apache.geronimo.harness.EETestDummy");
>
> Class cls =
> bundle1.loadClass("org.apache.geronimo.embedded.TestClass");
> // this will force the fields classes to be resolved.
> cls.getDeclaredFields();
> When this is run, the cls.getDeclaredFields() call will get a NoClassDefFound
> exception for the class Lorg/apache/geronimo/harness/EETest
> That class is defined in one of the embedded jars. If the load of the
> EETestDummy class is commented out, then the getDeclaredFields() call does
> not throw the exception. The resolution of the internal EETest class appears
> to depend on whether the imported package gets resolved first.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.