diff --git a/src/main/java/hudson/remoting/ClassFilter.java b/src/main/java/hudson/remoting/ClassFilter.java index f28233c64..6536842df 100644 --- a/src/main/java/hudson/remoting/ClassFilter.java +++ b/src/main/java/hudson/remoting/ClassFilter.java @@ -81,13 +81,20 @@ public final Class check(Class c) { * values provide for user specified overrides - see {@link #FILE_OVERRIDE_LOCATION_PROPERTY}. */ /*package*/ static ClassFilter createDefaultInstance() { - List patternOverride = loadPatternOverride(); - if (patternOverride != null) { - LOGGER.log(Level.FINE, "Using user specified overrides for class blacklisting"); - return new RegExpClassFilter(patternOverride); - } else { - LOGGER.log(Level.FINE, "Using default in built class blacklisting"); - return new RegExpClassFilter(DEFAULT_PATTERNS); + try { + List patternOverride = loadPatternOverride(); + if (patternOverride != null) { + LOGGER.log(Level.FINE, "Using user specified overrides for class blacklisting"); + return new RegExpClassFilter(patternOverride); + } else { + LOGGER.log(Level.FINE, "Using default in built class blacklisting"); + return new RegExpClassFilter(DEFAULT_PATTERNS); + } + } + catch (Error e) { + // when being used by something like XStream the actual cause gets swallowed + LOGGER.log(Level.SEVERE, "Failed to initialize the default class filter", e); + throw e; } }