diff --git a/engine/src/core/com/jme3/export/SavableClassUtil.java b/engine/src/core/com/jme3/export/SavableClassUtil.java index d99372072..804990f82 100644 --- a/engine/src/core/com/jme3/export/SavableClassUtil.java +++ b/engine/src/core/com/jme3/export/SavableClassUtil.java @@ -185,13 +185,15 @@ public class SavableClassUtil { } String newClassName = remapClass(className); - for (ClassLoader classLoader : loaders){ - try { - return (Savable) classLoader.loadClass(newClassName).newInstance(); - } catch (InstantiationException e) { - } catch (IllegalAccessException e) { - } + synchronized(loaders) { + for (ClassLoader classLoader : loaders){ + try { + return (Savable) classLoader.loadClass(newClassName).newInstance(); + } catch (InstantiationException e) { + } catch (IllegalAccessException e) { + } + } } return fromName(className); diff --git a/engine/src/desktop/com/jme3/asset/DesktopAssetManager.java b/engine/src/desktop/com/jme3/asset/DesktopAssetManager.java index 8a4003388..e1c25abd6 100644 --- a/engine/src/desktop/com/jme3/asset/DesktopAssetManager.java +++ b/engine/src/desktop/com/jme3/asset/DesktopAssetManager.java @@ -102,12 +102,15 @@ public class DesktopAssetManager implements AssetManager { public void addClassLoader(ClassLoader loader){ if(classLoaders == null) classLoaders = Collections.synchronizedList(new ArrayList()); - classLoaders.add(loader); + synchronized(classLoaders) { + classLoaders.add(loader); + } } public void removeClassLoader(ClassLoader loader){ - if(classLoaders != null) - classLoaders.remove(loader); + if(classLoaders != null) synchronized(classLoaders) { + classLoaders.remove(loader); + } } public List getClassLoaders(){