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
|
* @author Yegor Kozlov
|
||||||
*/
|
*/
|
||||||
public final class OOXMLLite {
|
public final class OOXMLLite {
|
||||||
|
private static Field _classes;
|
||||||
private static final Field _classes;
|
|
||||||
static {
|
|
||||||
try {
|
|
||||||
_classes = ClassLoader.class.getDeclaredField("classes");
|
|
||||||
_classes.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destination directory to copy filtered classes
|
* Destination directory to copy filtered classes
|
||||||
@ -206,6 +197,16 @@ public final class OOXMLLite {
|
|||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private static Map<String, Class<?>> getLoadedClasses(String ptrn) {
|
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();
|
ClassLoader appLoader = ClassLoader.getSystemClassLoader();
|
||||||
try {
|
try {
|
||||||
Vector<Class<?>> classes = (Vector<Class<?>>) _classes.get(appLoader);
|
Vector<Class<?>> classes = (Vector<Class<?>>) _classes.get(appLoader);
|
||||||
|
Loading…
Reference in New Issue
Block a user