diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java index 1501f89b7..86261dfd9 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeLoaderImpl.java @@ -314,7 +314,8 @@ SchemaTypeSystemImpl typeSystemForClassname(String searchdir, String name) { } SchemaTypeSystemImpl getTypeSystemOnClasspath(String name) { - return _classpathTypeSystems.computeIfAbsent(name, n -> new SchemaTypeSystemImpl(_resourceLoader, n, this)); + return _classpathTypeSystems.computeIfAbsent(name, + n -> new SchemaTypeSystemImpl(_resourceLoader, _classLoader, n, this)); } SchemaTypeSystemImpl getTypeSystemOnClassloader(String name) { diff --git a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java index ed6b7919f..f55b0e012 100644 --- a/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java +++ b/src/main/java/org/apache/xmlbeans/impl/schema/SchemaTypeSystemImpl.java @@ -222,9 +222,18 @@ public static SchemaTypeSystemImpl forName(String name, ClassLoader loader) { } public SchemaTypeSystemImpl(ResourceLoader resourceLoader, String name, SchemaTypeLoader linker) { + this(resourceLoader, null, name, linker); + } + + /** + * @since 5.4.0 + */ + public SchemaTypeSystemImpl(ResourceLoader resourceLoader, ClassLoader classLoader, + String name, SchemaTypeLoader linker) { _name = name; _linker = linker; _resourceLoader = resourceLoader; + _classloader = classLoader; try { initFromHeader(); } catch (RuntimeException | Error e) {