1b09286266667df39e9137a0949d0f6ab93701b7
[scilab.git] / scilab / modules / javasci / src / java / javasci / ClassPath.java
1 /*--------------------------------------------------------------------------*/\r
2 /**\r
3  * Loading classes at runtime.\r
4  */\r
5 /*--------------------------------------------------------------------------*/\r
6 package javasci;\r
7 /*--------------------------------------------------------------------------*/\r
8 import java.lang.reflect.Method;\r
9 import java.io.File;\r
10 import java.io.IOException;\r
11 import java.net.URL;\r
12 import java.net.URLClassLoader;\r
13 import java.net.URI;\r
14 /*--------------------------------------------------------------------------*/\r
15 /**\r
16  * ClassPath to overload java classpath.\r
17  */\r
18 public class ClassPath {\r
19 \r
20 private static final Class[] parameters = new Class[]{URL.class};\r
21 \r
22 /**\r
23  * add a filename to java classpath.\r
24  * @param s a filename\r
25  * @throws IOException if an error occurs\r
26  */\r
27 public static void addFile(final String s) throws IOException {\r
28 File f = new File(s);\r
29 addFile(f);\r
30 }\r
31 /*--------------------------------------------------------------------------*/\r
32 /**\r
33  * add a file to java classpath.\r
34  * @param  f a file\r
35  * @throws IOException if an error occurs\r
36  */\r
37 public static void addFile(final File f) throws IOException {\r
38         \r
39 URI uri = f.toURI();\r
40 addURL(uri.toURL());\r
41 }\r
42 /*--------------------------------------------------------------------------*/\r
43 /**\r
44  * add a URL to classpath.\r
45  * @param u URL\r
46  * @throws IOException if an error occurs \r
47  */\r
48 public static void addURL(final URL u) throws IOException {\r
49 \r
50 URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();\r
51 Class sysclass = URLClassLoader.class;\r
52 \r
53 try {\r
54 Method method = sysclass.getDeclaredMethod("addURL", parameters);\r
55 method.setAccessible(true);\r
56 method.invoke(sysloader , new Object[] {u });\r
57 } catch (Throwable t) {\r
58 t.printStackTrace();\r
59 throw new IOException("Error, could not add URL to system classloader");\r
60 }\r
61 \r
62 }\r
63 /*--------------------------------------------------------------------------*/\r
64 /**\r
65  * get the scilab classpath.\r
66  * @return classpath\r
67  */\r
68 public static String[] getClassPath() {\r
69         \r
70 URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();\r
71 URL[] path = sysloader.getURLs();\r
72 String[] paths = new String[path.length];\r
73 for (int i = 0; i < path.length; i++) {\r
74 paths[i] = path[i].getFile();\r
75 }\r
76     return paths;\r
77 }\r
78 /*--------------------------------------------------------------------------*/\r
79 }\r
80 /*--------------------------------------------------------------------------*/\r
81 \r