01: /*
02: OctopusClassLoader
03: Copyright (C) 2002-2003 Together
04: This library is free software; you can redistribute it and/or
05: modify it under the terms of the GNU Lesser General Public
06: License as published by the Free Software Foundation; either
07: version 2.1 of the License, or (at your option) any later version.
08: This library is distributed in the hope that it will be useful,
09: but WITHOUT ANY WARRANTY; without even the implied warranty of
10: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11: Lesser General Public License for more details.
12: You should have received a copy of the GNU Lesser General Public
13: License along with this library; if not, write to the Free Software
14: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15: Loader.java
16: Date: 03.03.2003.
17: @version 2.1 alpha
18: @author:
19: Zoran Milakovic zoran@prozone.co.yu
20: */
21:
22: package org.webdocwf.util.loader;
23:
24: import java.io.*;
25: import java.net.*;
26: import java.lang.reflect.*;
27:
28: /**
29: *
30: * OctopusClassLoader add files to System Class Loader
31: * @author Zoran Milakovic
32: * @version 1.0
33: */
34: public class OctopusClassLoader {
35:
36: private static final Class[] parameters = new Class[] { URL.class };
37:
38: /**
39: * This method add file to System class loader
40: * @param s defines the path to file object (string)
41: * @throws IOException
42: */
43: public static void addFile(String s) throws IOException {
44:
45: File f = new File(s);
46:
47: addFile(f);
48:
49: } //end method
50:
51: /**
52: * This method add file to System class loader
53: * @param f defines the file object
54: * @throws IOException
55: */
56: public static void addFile(File f) throws IOException {
57:
58: addURL(f.toURL());
59:
60: } //end method
61:
62: /**
63: * This method add file to System class loader
64: * @param u defines the url object
65: * @throws IOException
66: */
67: public static void addURL(URL u) throws IOException {
68:
69: URLClassLoader sysloader = (URLClassLoader) ClassLoader
70: .getSystemClassLoader();
71:
72: Class sysclass = URLClassLoader.class;
73:
74: try {
75:
76: Method method = sysclass.getDeclaredMethod("addURL",
77: parameters);
78:
79: method.setAccessible(true);
80:
81: method.invoke(sysloader, new Object[] { u });
82:
83: } catch (Throwable t) {
84:
85: t.printStackTrace();
86:
87: throw new IOException(
88: "Error, could not add URL to system classloader");
89:
90: } //end try catch
91:
92: } //end method
93:
94: } //end class
|