View Javadoc

1   package twcsckernel.projectbase.utils;
2   
3   import java.io.File;
4   import java.io.IOException;
5   import java.lang.reflect.Method;
6   import java.net.URL;
7   import java.net.URLClassLoader;
8   
9   /***
10   * Klasa służy do dynamicznego rozszerzania ścieżki classpath (ładowania
11   * klas do systemowego classloadera).
12   * @author VMD Group, internetowe grupy dyskusyjne
13   *
14   */
15  public class ClassPathLoader {
16  	private static final Class[] parameters = new Class[] { URL.class };
17  
18  	/***
19  	 * Dodanie pliku JAR/katalogu do sciezki classpath.
20  	 * @param filePath - ścieżka do pliku JAR/katalogu 
21  	 * @throws IOException - błąd podczas wczytywania
22  	 */
23  	public static void addFile(String filePath) throws IOException {
24  		addFile(new File(filePath));
25  	}
26  
27  	/***
28  	 * Dodanie pliku JAR/katalogu do sciezki classpath.
29  	 * @param file - plik JAR/katalog 
30  	 * @throws IOException - błąd podczas wczytywania
31  	 */
32  	public static void addFile(File file) throws IOException {
33  		addURL(file.toURL());
34  	}
35  
36  	/***
37  	 * Dodanie pliku JAR/katalogu do sciezki classpath.
38  	 * @param url - URL pliku JAR/katalogu 
39  	 * @throws IOException - błąd podczas wczytywania
40  	 */
41  	public static void addURL(URL url) throws IOException {
42  		URLClassLoader sysloader = (URLClassLoader) ClassLoader
43  				.getSystemClassLoader();
44  		Class sysclass = URLClassLoader.class;
45  		try {
46  			Method method = sysclass.getDeclaredMethod("addURL", parameters);
47  			method.setAccessible(true);
48  			method.invoke(sysloader, new Object[] { url });
49  		} catch (Exception e) {
50  			throw new IOException(
51  					"Error, could not add URL to system classloader:"
52  							+ e.getMessage());
53  		}
54  	}
55  }