diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java index d1303d48..8b47e1d0 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/UIDefaultsLoader.java @@ -109,6 +109,14 @@ class UIDefaultsLoader } } + // collect addon class loaders + List addonClassLoaders = new ArrayList<>(); + for( FlatDefaultsAddon addon : addons ) { + ClassLoader addonClassLoader = addon.getClass().getClassLoader(); + if( !addonClassLoaders.contains( addonClassLoader ) ) + addonClassLoaders.add( addonClassLoader ); + } + // load custom properties files (usually provides by applications) List customDefaultsSources = FlatLaf.getCustomDefaultsSources(); int size = (customDefaultsSources != null) ? customDefaultsSources.size() : 0; @@ -119,6 +127,10 @@ class UIDefaultsLoader String packageName = (String) source; ClassLoader classLoader = (ClassLoader) customDefaultsSources.get( ++i ); + // use class loader also for instantiating classes specified in values + if( classLoader != null && !addonClassLoaders.contains( classLoader ) ) + addonClassLoaders.add( classLoader ); + packageName = packageName.replace( '.', '/' ); if( classLoader == null ) classLoader = FlatLaf.class.getClassLoader(); @@ -145,14 +157,6 @@ class UIDefaultsLoader } } - // collect addon class loaders - List addonClassLoaders = new ArrayList<>(); - for( FlatDefaultsAddon addon : addons ) { - ClassLoader addonClassLoader = addon.getClass().getClassLoader(); - if( !addonClassLoaders.contains( addonClassLoader ) ) - addonClassLoaders.add( addonClassLoader ); - } - // add additional defaults if( additionalDefaults != null ) properties.putAll( additionalDefaults );