Bug 56550: Defer the initialization of the _classes to when it is actually needed to allow IBM JDK to at least load the class
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1647302 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a7ba500280
commit
645d2083bf
@ -47,16 +47,7 @@ import org.junit.runner.Result;
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public final class OOXMLLite {
|
||||
|
||||
private static final Field _classes;
|
||||
static {
|
||||
try {
|
||||
_classes = ClassLoader.class.getDeclaredField("classes");
|
||||
_classes.setAccessible(true);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
private static Field _classes;
|
||||
|
||||
/**
|
||||
* Destination directory to copy filtered classes
|
||||
@ -206,6 +197,16 @@ public final class OOXMLLite {
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
private static Map<String, Class<?>> getLoadedClasses(String ptrn) {
|
||||
// make the field accessible, we defer this from static initialization to here to
|
||||
// allow JDKs which do not have this field (e.g. IBM JDK) to at least load the class
|
||||
// without failing, see https://issues.apache.org/bugzilla/show_bug.cgi?id=56550
|
||||
try {
|
||||
_classes = ClassLoader.class.getDeclaredField("classes");
|
||||
_classes.setAccessible(true);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
ClassLoader appLoader = ClassLoader.getSystemClassLoader();
|
||||
try {
|
||||
Vector<Class<?>> classes = (Vector<Class<?>>) _classes.get(appLoader);
|
||||
|
Loading…
Reference in New Issue
Block a user