Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "BundleProxyClassLoader recipe"
Line 14: | Line 14: | ||
} | } | ||
− | // | + | // Note: Both ClassLoader.getResources(...) and bundle.getResources(...) consult |
− | // | + | // the boot classloader. As a result, BundleProxyClassLoader.getResources(...) |
− | // | + | // might return duplicate results from the boot classloader. Prior to Java 5 |
− | // | + | // Classloader.getResources was marked final. If your target environment requires |
− | // | + | // at least Java 5 you can prevent the occurence of duplicate boot classloader |
− | // | + | // resources by overriding ClassLoader.getResources(...) instead of |
− | // | + | // ClassLoader.findResources(...). |
public Enumeration findResources(String name) throws IOException { | public Enumeration findResources(String name) throws IOException { | ||
return bundle.getResources(name); | return bundle.getResources(name); |
Revision as of 15:20, 7 June 2006
import java.io.IOException; import java.net.URL; import java.util.Enumeration; import org.osgi.framework.Bundle; public class BundleProxyClassLoader extends ClassLoader { private Bundle bundle; public BundleProxyClassLoader(Bundle bundle) { this.bundle = bundle; } // Note: Both ClassLoader.getResources(...) and bundle.getResources(...) consult // the boot classloader. As a result, BundleProxyClassLoader.getResources(...) // might return duplicate results from the boot classloader. Prior to Java 5 // Classloader.getResources was marked final. If your target environment requires // at least Java 5 you can prevent the occurence of duplicate boot classloader // resources by overriding ClassLoader.getResources(...) instead of // ClassLoader.findResources(...). public Enumeration findResources(String name) throws IOException { return bundle.getResources(name); } public URL getResource(String name) { return bundle.getResource(name); } public Class loadClass(String name) throws ClassNotFoundException { return bundle.loadClass(name); } }