@Test public void testDefaultClassLoader() throws Exception { String resource = getClass().getName().replace('.', '/').concat(".class"); ClassLoader thisLoader = getClass().getClassLoader(); ClassLoader defaultClassLoader = ClassLoading.getDefaultClassLoader(); Thread.currentThread().setContextClassLoader(null); assertSame(thisLoader.loadClass(getClass().getName()), defaultClassLoader.loadClass(getClass().getName())); assertEquals(thisLoader.getResource(resource), defaultClassLoader.getResource(resource)); assertThat(list(defaultClassLoader.getResources(resource)), is(list(thisLoader.getResources(resource)))); Thread.currentThread().setContextClassLoader(new FindNothingLoader()); assertSame(thisLoader.loadClass(getClass().getName()), defaultClassLoader.loadClass(getClass().getName())); assertEquals(thisLoader.getResource(resource), defaultClassLoader.getResource(resource)); assertThat(list(defaultClassLoader.getResources(resource)), is(list(thisLoader.getResources(resource)))); URL url = new URL("file:///tmp"); ClassLoader tc = new TestClassLoader(url); Thread.currentThread().setContextClassLoader(tc); Class<?> c = defaultClassLoader.loadClass(getClass().getName()); assertNotSame(getClass(), c); assertSame(tc, c.getClassLoader()); assertEquals(url, defaultClassLoader.getResource(resource)); assertThat(list(defaultClassLoader.getResources(resource)), contains(url, thisLoader.getResource(resource))); }