9
9
public class ClassLoaderWrapper {
10
10
11
11
ClassLoader defaultClassLoader ;
12
+ ClassLoader systemClassLoader ;
12
13
13
14
ClassLoaderWrapper () {
15
+ try {
16
+ systemClassLoader = ClassLoader .getSystemClassLoader ();
17
+ } catch (Exception ignored ) {
18
+ // AccessControlException on Google App Engine
19
+ }
14
20
}
15
-
21
+
16
22
/**
17
23
* Get a resource as a URL using the current class path
18
24
*
19
25
* @param resource - the resource to locate
20
26
* @return the resource or null
21
27
*/
22
28
public URL getResourceAsURL (String resource ) {
23
- return getResourceAsURL (resource , new ClassLoader []{
24
- defaultClassLoader ,
25
- Thread .currentThread ().getContextClassLoader (),
26
- getClass ().getClassLoader (),
27
- ClassLoader .getSystemClassLoader ()
28
- });
29
+ return getResourceAsURL (resource , getClassLoaders (null ));
29
30
}
30
31
31
32
/**
@@ -36,13 +37,7 @@ public URL getResourceAsURL(String resource) {
36
37
* @return the stream or null
37
38
*/
38
39
public URL getResourceAsURL (String resource , ClassLoader classLoader ) {
39
- return getResourceAsURL (resource , new ClassLoader []{
40
- classLoader ,
41
- defaultClassLoader ,
42
- Thread .currentThread ().getContextClassLoader (),
43
- getClass ().getClassLoader (),
44
- ClassLoader .getSystemClassLoader ()
45
- });
40
+ return getResourceAsURL (resource , getClassLoaders (classLoader ));
46
41
}
47
42
48
43
/**
@@ -52,12 +47,7 @@ public URL getResourceAsURL(String resource, ClassLoader classLoader) {
52
47
* @return the stream or null
53
48
*/
54
49
public InputStream getResourceAsStream (String resource ) {
55
- return getResourceAsStream (resource , new ClassLoader []{
56
- defaultClassLoader ,
57
- Thread .currentThread ().getContextClassLoader (),
58
- getClass ().getClassLoader (),
59
- ClassLoader .getSystemClassLoader ()
60
- });
50
+ return getResourceAsStream (resource , getClassLoaders (null ));
61
51
}
62
52
63
53
/**
@@ -68,13 +58,7 @@ public InputStream getResourceAsStream(String resource) {
68
58
* @return the stream or null
69
59
*/
70
60
public InputStream getResourceAsStream (String resource , ClassLoader classLoader ) {
71
- return getResourceAsStream (resource , new ClassLoader []{
72
- classLoader ,
73
- defaultClassLoader ,
74
- Thread .currentThread ().getContextClassLoader (),
75
- getClass ().getClassLoader (),
76
- ClassLoader .getSystemClassLoader ()
77
- });
61
+ return getResourceAsStream (resource , getClassLoaders (classLoader ));
78
62
}
79
63
80
64
/**
@@ -85,12 +69,7 @@ public InputStream getResourceAsStream(String resource, ClassLoader classLoader)
85
69
* @throws ClassNotFoundException Duh.
86
70
*/
87
71
public Class <?> classForName (String name ) throws ClassNotFoundException {
88
- return classForName (name , new ClassLoader []{
89
- defaultClassLoader ,
90
- Thread .currentThread ().getContextClassLoader (),
91
- getClass ().getClassLoader (),
92
- ClassLoader .getSystemClassLoader ()
93
- });
72
+ return classForName (name , getClassLoaders (null ));
94
73
}
95
74
96
75
/**
@@ -102,13 +81,7 @@ public Class<?> classForName(String name) throws ClassNotFoundException {
102
81
* @throws ClassNotFoundException Duh.
103
82
*/
104
83
public Class <?> classForName (String name , ClassLoader classLoader ) throws ClassNotFoundException {
105
- return classForName (name , new ClassLoader []{
106
- classLoader ,
107
- defaultClassLoader ,
108
- Thread .currentThread ().getContextClassLoader (),
109
- getClass ().getClassLoader (),
110
- ClassLoader .getSystemClassLoader ()
111
- });
84
+ return classForName (name , getClassLoaders (classLoader ));
112
85
}
113
86
114
87
/**
@@ -201,4 +174,13 @@ Class<?> classForName(String name, ClassLoader[] classLoader) throws ClassNotFou
201
174
202
175
}
203
176
177
+ ClassLoader [] getClassLoaders (ClassLoader classLoader ) {
178
+ return new ClassLoader []{
179
+ classLoader ,
180
+ defaultClassLoader ,
181
+ Thread .currentThread ().getContextClassLoader (),
182
+ getClass ().getClassLoader (),
183
+ systemClassLoader };
184
+ }
185
+
204
186
}
0 commit comments