@Override public Object deserializeTypedFromScalar(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ClassLoader current = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(_baseType.getRawClass().getClassLoader()); if (classesSet.contains(_baseType.getRawClass())) { try { return super.deserializeTypedFromScalar(jp, ctxt); } catch (Exception e) { JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt); return value; } } JsonDeserializer<Object> deser = _findDeserializer(ctxt, baseTypeName()); Object value = deser.deserialize(jp, ctxt); return value; } finally { Thread.currentThread().setContextClassLoader(current); } }