package com.javabook.classloader.namespace;
import com.javabook.classloader.FileSysClassLoader;
import com.javabook.classloader.NetworkClassLoader;
/**
* @author Summer Lu
* @email gmluyang@gmail.com
* @date 2014-8-25
*
*/
public class ClassFromDifferentClassLoaderDemo {
/**
* @param args
*/
public static void main(String[] args) {
try {
// --------------------------------------------------
// File/URL
// --------------------------------------------------
// URL
String urls = "file:\\C:\\mybin";
// File
String file = "C:\\mybin\\";
// --------------------------------------------------
// FileSysClassLoader/NetworkClassLoader
// --------------------------------------------------
// networkClassLoader
NetworkClassLoader networkClassLoader = new NetworkClassLoader(urls);
System.out.println("networkClassLoader.getParent() ->" + networkClassLoader.getParent());
// fileSystemClassLoader
FileSysClassLoader fileSysClassLoader = new FileSysClassLoader(file);
System.out.println("fileSysClassLoader.getParent() ->" + fileSysClassLoader.getParent());
// --------------------------------------------------
// SimpleServiceLowerCaseImpl
// --------------------------------------------------
// simpleServiceLowerCaseImpl
String simpleServiceLowerCaseImpl = "com.javabook.classloader.service.impl.SimpleServiceLowerCaseImpl";
// simpleServiceLowerCaseImplClass1
Class<?> simpleServiceLowerCaseImplClass1 = networkClassLoader.loadClass(simpleServiceLowerCaseImpl);
// simpleServiceLowerCaseImplClass2
Class<?> simpleServiceLowerCaseImplClass2 = fileSysClassLoader.loadClass(simpleServiceLowerCaseImpl);
System.out.println("SimpleServiceLowerCaseImpl:");
System.out.println( simpleServiceLowerCaseImplClass1.getClassLoader() + " -> " + simpleServiceLowerCaseImplClass1.getName() );
System.out.println( simpleServiceLowerCaseImplClass2.getClassLoader() + " -> " + simpleServiceLowerCaseImplClass2.getName() );
System.out.println( "simpleServiceLowerCaseImplClass1 == simpleServiceLowerCaseImplClass2 ? " + (simpleServiceLowerCaseImplClass1==simpleServiceLowerCaseImplClass2) );
// --------------------------------------------------
// SimpleServiceUpperCaseImpl
// --------------------------------------------------
// simpleServiceUpperCaseImpl
String simpleServiceUpperCaseImpl = "com.javabook.classloader.service.impl.SimpleServiceUpperCaseImpl";
// simpleServiceUpperCaseImplClass1
Class<?> simpleServiceUpperCaseImplClass1 = networkClassLoader.loadClass(simpleServiceUpperCaseImpl);
// simpleServiceUpperCaseImplClass2
Class<?> simpleServiceUpperCaseImplClass2 = fileSysClassLoader.loadClass(simpleServiceUpperCaseImpl);
System.out.println("\nSimpleServiceUpperCaseImpl:");
System.out.println( simpleServiceUpperCaseImplClass1.getClassLoader() + " -> " + simpleServiceUpperCaseImplClass1.getName() );
System.out.println( simpleServiceUpperCaseImplClass2.getClassLoader() + " -> " + simpleServiceUpperCaseImplClass2.getName() );
System.out.println( "simpleServiceUpperCaseImplClass1 == simpleServiceUpperCaseImplClass2 ? " + (simpleServiceUpperCaseImplClass1==simpleServiceUpperCaseImplClass2) );
} catch (Exception e) {
e.printStackTrace();
}
}
}
Console
networkClassLoader.getParent() ->sun.misc.Launcher$AppClassLoader@18b4aac2
fileSysClassLoader.getParent() ->sun.misc.Launcher$AppClassLoader@18b4aac2
SimpleServiceLowerCaseImpl:
com.javabook.classloader.NetworkClassLoader@677327b6 -> com.javabook.classloader.service.impl.SimpleServiceLowerCaseImpl
com.javabook.classloader.FileSysClassLoader@7f31245a -> com.javabook.classloader.service.impl.SimpleServiceLowerCaseImpl
simpleServiceLowerCaseImplClass1 == simpleServiceLowerCaseImplClass2 ? false
SimpleServiceUpperCaseImpl:
com.javabook.classloader.NetworkClassLoader@677327b6 -> com.javabook.classloader.service.impl.SimpleServiceUpperCaseImpl
com.javabook.classloader.FileSysClassLoader@7f31245a -> com.javabook.classloader.service.impl.SimpleServiceUpperCaseImpl
simpleServiceUpperCaseImplClass1 == simpleServiceUpperCaseImplClass2 ? false