use class classloader if it has not been loaded by system classloader

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/jaxb-api/src/main/java/jakarta/xml/bind/ContextFinder.java b/jaxb-api/src/main/java/jakarta/xml/bind/ContextFinder.java
index 8f898bf..6c01465 100644
--- a/jaxb-api/src/main/java/jakarta/xml/bind/ContextFinder.java
+++ b/jaxb-api/src/main/java/jakarta/xml/bind/ContextFinder.java
@@ -382,10 +382,15 @@
         }
 
         // to ensure backwards compatibility
+        ClassLoader loader = getContextClassLoader();
         // it is guaranteed classes are not null but it is not guaranteed, that array is not empty
-        ClassLoader loader = classes.length > 0
-                ? getClassClassLoader(classes[0])
-                : getContextClassLoader();
+        if (classes.length > 0) {
+            ClassLoader c = getClassClassLoader(classes[0]);
+            //switch to classloader which loaded the class if it is not a bootstrap cl
+            if (c != null) {
+                loader = c;
+            }
+        }
         String className = firstByServiceLoaderDeprecated(JAXBContext.class, loader);
         if (className != null) return newInstance(classes, properties, className, loader);