1 10 package org.nanocontainer.booter; 11 12 import java.io.File ; 13 import java.io.IOException ; 14 import java.lang.reflect.Constructor ; 15 import java.lang.reflect.InvocationTargetException ; 16 import java.net.MalformedURLException ; 17 import java.net.URL ; 18 import java.net.URLClassLoader ; 19 20 28 public class NanoContainerBooter { 29 30 private static final String COMMON_PATH = "lib/common"; 31 private static final String HIDDEN_PATH = "lib/hidden"; 32 33 38 public static void main(String [] args) throws Exception { 39 new NanoContainerBooter(args); 40 } 41 42 53 public NanoContainerBooter(String [] args) throws ClassNotFoundException , IllegalAccessException , InvocationTargetException , InstantiationException , IOException { 54 55 URLClassLoader commonClassLoader = new URLClassLoader (toURLs(COMMON_PATH), 56 NanoContainerBooter.class.getClassLoader().getParent() ); 57 58 URLClassLoader hiddenClassLoader = new URLClassLoader (toURLs(HIDDEN_PATH), 59 commonClassLoader ); 60 61 System.out.println("NanoContainer Booter: Booting..."); 62 newStandalone(hiddenClassLoader, args); 63 System.out.println("NanoContainer Booter: Booted."); 64 65 } 66 67 78 private void newStandalone(URLClassLoader classLoader, String [] args) throws ClassNotFoundException , InstantiationException , IllegalAccessException , InvocationTargetException { 79 Class nanoStandalone = classLoader.loadClass("org.nanocontainer.Standalone"); 80 Constructor constructor = nanoStandalone.getConstructors()[0]; 81 constructor.newInstance(new Object []{args}); 82 } 83 84 90 private URL [] toURLs(String path) throws MalformedURLException { 91 File [] files = new File (path).listFiles(); 92 URL [] urls = new URL [files.length]; 93 for (int i = 0; i < files.length; i++) { 94 urls[i]= files[i].toURL(); 95 } 96 return urls; 97 } 98 } | Popular Tags |