diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ClassLoaderSupportImpl.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ClassLoaderSupportImpl.java index 4cb74191d76d1..4747aaa165130 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ClassLoaderSupportImpl.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ClassLoaderSupportImpl.java @@ -76,7 +76,23 @@ class ClassLoaderSupportImpl extends ClassLoaderSupport { @Override protected boolean isNativeImageClassLoaderImpl(ClassLoader loader) { - return loader == imageClassLoader || loader instanceof NativeImageSystemClassLoader; + if (loader == imageClassLoader) { + /* Trivial case */ + return true; + } + if (loader == classLoaderSupport.classPathClassLoader) { + /* + * If imageClassLoader is a module classloader (building image with non-empty + * NativeImageClassLoaderSupport.imagemp), the passed loader could also be our + * classLoaderSupport.classPathClassLoader (building image with non-empty + * NativeImageClassLoaderSupport.imagecp). + */ + return true; + } + if (loader instanceof NativeImageSystemClassLoader) { + return true; + } + return false; } @Override diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java index ddc11d0a2e664..c4c93e558529c 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/NativeImageClassLoaderSupport.java @@ -95,7 +95,7 @@ public class NativeImageClassLoaderSupport { private final EconomicMap> packages; private final EconomicSet emptySet; - private final URLClassLoader classPathClassLoader; + final URLClassLoader classPathClassLoader; private final ClassLoader modulePathClassLoader; public final ModuleFinder upgradeAndSystemModuleFinder;