How To Load Classes Which Are Not In Your Classpath
In certain scenario, you may need to load some classes which are not in your classpath.
Java Example
Assume folder “c:\\other_classes\\” is not in your project classpath, here’s an example to show how to load a Java class from this folder. The code and comments are self-explanatory.
import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.security.CodeSource; import java.security.ProtectionDomain; public class App{ public static void main(String[] args) { try{ File file = new File("c:\\other_classes\\"); //convert the file to URL format URL url = file.toURI().toURL(); URL[] urls = new URL[]{url}; //load this folder into Class loader ClassLoader cl = new URLClassLoader(urls); //load the Address class in 'c:\\other_classes\\' Class cls = cl.loadClass("com.mkyong.io.Address"); //print the location from where this class was loaded ProtectionDomain pDomain = cls.getProtectionDomain(); CodeSource cSource = pDomain.getCodeSource(); URL urlfrom = cSource.getLocation(); System.out.println(urlfrom.getFile()); }catch(Exception ex){ ex.printStackTrace(); } } }
Output
/c:/other_classes/
You will notice this class is loaded from “/c:/other_classes/“, which is not in your project classpath.
No comments:
Post a Comment