--- old/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/BrowserJSObjectLinker.java 2014-12-04 19:42:58.864289537 +0530 +++ new/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/BrowserJSObjectLinker.java 2014-12-04 19:42:58.740288928 +0530 @@ -45,7 +45,15 @@ * A Dynalink linker to handle web browser built-in JS (DOM etc.) objects. */ final class BrowserJSObjectLinker implements TypeBasedGuardingDynamicLinker { - private static final ClassLoader myLoader = BrowserJSObjectLinker.class.getClassLoader(); + private static ClassLoader extLoader; + static { + extLoader = BrowserJSObjectLinker.class.getClassLoader(); + // in case nashorn is loaded as bootstrap! + if (extLoader == null) { + extLoader = ClassLoader.getSystemClassLoader().getParent(); + } + } + private static final String JSOBJECT_CLASS = "netscape.javascript.JSObject"; // not final because this is lazily initialized // when we hit a subclass for the first time. @@ -69,7 +77,7 @@ // check if this class is a subclass of JSObject Class clazz = type; while (clazz != null) { - if (clazz.getClassLoader() == myLoader && + if (clazz.getClassLoader() == extLoader && clazz.getName().equals(JSOBJECT_CLASS)) { jsObjectClass = clazz; return true;