< prev index next >

test/hotspot/jtreg/runtime/LoaderConstraints/common/PreemptingClassLoader.java

Print this page
rev 49654 : 8199852: Print more information about class loaders in LinkageErrors.

*** 25,42 **** import java.io.*; public class PreemptingClassLoader extends ClassLoader { private final Set<String> names = new HashSet<>(); public PreemptingClassLoader(String... names) { for (String n : names) this.names.add(n); } protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { if (!names.contains(name)) return super.loadClass(name, resolve); ! Class<?> result = findLoadedClass(name); if (result == null) { String filename = name.replace('.', '/') + ".class"; try (InputStream data = getResourceAsStream(filename)) { if (data == null) throw new ClassNotFoundException(); try (ByteArrayOutputStream buffer = new ByteArrayOutputStream()) { --- 25,54 ---- import java.io.*; public class PreemptingClassLoader extends ClassLoader { private final Set<String> names = new HashSet<>(); + boolean checkLoaded = true; public PreemptingClassLoader(String... names) { for (String n : names) this.names.add(n); } + public PreemptingClassLoader(String name, String[] names) { + super(name, ClassLoader.getSystemClassLoader()); + for (String n : names) this.names.add(n); + } + + public PreemptingClassLoader(String name, String[] names, boolean cL) { + super(name, ClassLoader.getSystemClassLoader()); + for (String n : names) this.names.add(n); + checkLoaded = cL; + } + protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { if (!names.contains(name)) return super.loadClass(name, resolve); ! Class<?> result = checkLoaded ? findLoadedClass(name) : null; if (result == null) { String filename = name.replace('.', '/') + ".class"; try (InputStream data = getResourceAsStream(filename)) { if (data == null) throw new ClassNotFoundException(); try (ByteArrayOutputStream buffer = new ByteArrayOutputStream()) {
< prev index next >