KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > main > MainClassLoader


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.core.main;
19
20 import java.lang.reflect.Field JavaDoc;
21 import java.net.URL JavaDoc;
22 import java.net.URLClassLoader JavaDoc;
23 import java.util.Vector JavaDoc;
24
25 import sun.misc.URLClassPath;
26
27 /**
28  * Main entry point classloader.
29  *
30  * @author fdietz
31  */

32 public class MainClassLoader extends URLClassLoader JavaDoc {
33
34     private Vector JavaDoc<URL JavaDoc> vector = new Vector JavaDoc<URL JavaDoc>();
35
36     public MainClassLoader(ClassLoader JavaDoc parent) {
37         super(new URL JavaDoc[] {}, parent);
38
39         // through reflection
40
URLClassLoader JavaDoc sysloader = (URLClassLoader JavaDoc) ClassLoader
41                 .getSystemClassLoader();
42
43         // kids - don't do this at home
44
try {
45             Field JavaDoc ucp = URLClassLoader JavaDoc.class.getDeclaredField("ucp");
46             ucp.setAccessible(true);
47             URLClassPath currentCP = (URLClassPath) ucp.get(sysloader);
48             URL JavaDoc[] currentURLs = currentCP.getURLs();
49
50             // memorize all URLs
51
for (int i = 0; i < currentURLs.length; i++) {
52                 vector.add(currentURLs[i]);
53             }
54
55         } catch (Exception JavaDoc e) {
56             e.printStackTrace();
57         }
58     }
59
60     public void addURL(URL JavaDoc url) {
61         super.addURL(url);
62     }
63
64     public void addURLs(URL JavaDoc[] urls) {
65         for ( int i=0; i<urls.length; i++) {
66             super.addURL(urls[i]);
67         }
68     }
69 }
70
Popular Tags