[
https://issues.apache.org/jira/browse/FELIX-808?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12646900#action_12646900
]
Guillaume Sauthier commented on FELIX-808:
------------------------------------------
:)
In fact, we found that issue when Felix is run on Windows.
JacORB tries to load a configuration file using different strategies:
1. use the TCCL.getResource()
2. if not found, tries the absolute filename
The problem is that the resource it tries to load from the TCCL is already the
absolute file name (ie, under windows something like 'd:\path\to\my\resource').
So the call looks like this :
Thread.currentThread().getContextClassLoader().getResource("d:\path\to\my\resource");
The TCCL is a bundle ClassLoader of Felix with a 'DynamicImport-Packages *'.
This is where we fallback on the system classloader (not 100% sure) and we try
to load d:\...\resource as a class (changing all . to / and adding a .class
suffix :) ).
> R4SearchPolicyCore.searchDynamicImports() always loads a class even if the
> object to load is a resource
> -------------------------------------------------------------------------------------------------------
>
> Key: FELIX-808
> URL: https://issues.apache.org/jira/browse/FELIX-808
> Project: Felix
> Issue Type: Bug
> Affects Versions: felix-1.4.0
> Reporter: eyindanga
> Assignee: Richard S. Hall
> Fix For: felix-1.4.1
>
>
> The method R4SearchPolicyCore.searchDynamicImports( IModule module, String
> name, String pkgName, boolean isClass) always load a class by using the
> current thrad class loader even if the object to laod is a resource.
> This code may chek if the object is a class or a resource, and invoke the
> coresponding method on the classloader.
> // If there are no bundles providing exports for this
> // package and if the instigating class was not from a
> // bundle, then delegate to the parent class loader.
> // Otherwise, break out of loop and return null.
> boolean delegate = true;
> for (ClassLoader cl = classes[i].getClassLoader(); cl !=
> null; cl = cl.getClass().getClassLoader())
> {
> if (ContentClassLoader.class.isInstance(cl))
> {
> delegate = false;
> break;
> }
> }
> if (delegate)
> {
> return this.getClass().getClassLoader().loadClass(name);
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.