From ef0eca10839dd49dfac783874589256d230b32fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Gielen?= Date: Thu, 7 May 2009 21:15:45 +0000 Subject: [PATCH] WW-3121: Print a helpful message when a container's virtual filesystem architecture prevents the reloading classloader to work correctly. Afterwards exception is rethrown git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@772776 13f79535-47bb-0310-9956-ffa450edef68 --- .../convention/classloader/ReloadingClassLoader.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/classloader/ReloadingClassLoader.java b/plugins/convention/src/main/java/org/apache/struts2/convention/classloader/ReloadingClassLoader.java index d776c6250..c34b0a179 100644 --- a/plugins/convention/src/main/java/org/apache/struts2/convention/classloader/ReloadingClassLoader.java +++ b/plugins/convention/src/main/java/org/apache/struts2/convention/classloader/ReloadingClassLoader.java @@ -35,7 +35,7 @@ import org.apache.struts2.StrutsException; * The ReloadingClassLoader uses a delegation mechanism to allow * classes to be reloaded. That means that loadClass calls may * return different results if the class was changed in the underlying - * ResoruceStore. + * ResourceStore. *

* class taken from Apache JCI */ @@ -53,6 +53,12 @@ public class ReloadingClassLoader extends ClassLoader { stores = new ResourceStore[]{new FileResourceStore(new File(root.toURI()))}; } catch (URISyntaxException e) { throw new StrutsException("Unable to start the reloadable class loader, consider setting 'struts.convention.classes.reload' to false", e); + } catch (RuntimeException e) { + // see WW-3121 + // TODO: Fix this for a reloading mechanism to be marked as stable + LOG.error("Exception while trying to build the ResourceStore for URL " + root.toString(), e); + LOG.error("Consider setting struts.convention.classes.reload=false"); + throw e; } delegate = new ResourceStoreClassLoader(parent, stores);