src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/BrowserJSObjectLinker.java
Print this page
@@ -43,11 +43,19 @@
/**
* 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.
private static volatile Class<?> jsObjectClass;
private final NashornBeansLinker nashornBeansLinker;
@@ -67,11 +75,11 @@
}
// 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;
}
clazz = clazz.getSuperclass();