--- a/jdk/src/share/classes/java/lang/ClassLoader.java Mon Oct 05 23:42:48 2009 +0100
+++ b/jdk/src/share/classes/java/lang/ClassLoader.java Mon Oct 05 18:15:32 2009 -0700
@@ -51,6 +51,7 @@
import java.util.Hashtable;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
+import sun.misc.BootClassLoaderHook;
import sun.misc.ClassFileTransformer;
import sun.misc.CompoundEnumeration;
import sun.misc.Resource;
@@ -58,7 +59,6 @@
import sun.misc.VM;
import sun.reflect.Reflection;
import sun.security.util.SecurityConstants;
-import sun.jkernel.DownloadManager;
/**
* A class loader is an object that is responsible for loading classes. The
@@ -1300,21 +1300,7 @@
* Find resources from the VM's built-in classloader.
*/
private static URL getBootstrapResource(String name) {
- try {
- // If this is a known JRE resource, ensure that its bundle is
- // downloaded. If it isn't known, we just ignore the download
- // failure and check to see if we can find the resource anyway
- // (which is possible if the boot class path has been modified).
- if (sun.misc.VM.isBootedKernelVM()) {
- sun.jkernel.DownloadManager.getBootClassPathEntryForResource(
- name);
- }
- } catch (NoClassDefFoundError e) {
- // This happens while Java itself is being compiled; DownloadManager
- // isn't accessible when this code is first invoked. It isn't an
- // issue, as if we can't find DownloadManager, we can safely assume
- // that additional code is not available for download.
- }
+ BootClassLoaderHook.preLoadResource(name);
URLClassPath ucp = getBootstrapClassPath();
Resource res = ucp.getResource(name);
return res != null ? res.getURL() : null;
@@ -1831,24 +1817,7 @@
// Invoked in the java.lang.Runtime class to implement load and loadLibrary.
static void loadLibrary(Class fromClass, String name,
boolean isAbsolute) {
- try {
- if (VM.isBootedKernelVM() && !DownloadManager.isJREComplete() &&
- !DownloadManager.isCurrentThreadDownloading()) {
- DownloadManager.downloadFile("bin/" +
- System.mapLibraryName(name));
- // it doesn't matter if the downloadFile call returns false --
- // it probably just means that this is a user library, as
- // opposed to a JRE library
- }
- } catch (IOException e) {
- throw new UnsatisfiedLinkError("Error downloading library " +
- name + ": " + e);
- } catch (NoClassDefFoundError e) {
- // This happens while Java itself is being compiled; DownloadManager
- // isn't accessible when this code is first invoked. It isn't an
- // issue, as if we can't find DownloadManager, we can safely assume
- // that additional code is not available for download.
- }
+ BootClassLoaderHook.preLoadLibrary(name);
ClassLoader loader =
(fromClass == null) ? null : fromClass.getClassLoader();
if (sys_paths == null) {