public static URL getURL(String resourceLocation) throws FileNotFoundException {
        Assert.notNull(resourceLocation, "Resource location must not be null");
        if (resourceLocation.startsWith(CLASSPATH_URL_PREFIX)) {
            String path = resourceLocation.substring(CLASSPATH_URL_PREFIX.length());
            URL url = ClassUtils.getDefaultClassLoader().getResource(path);
            if (url == null) {
                String description = "class path resource [" + path + "]";
                throw new FileNotFoundException(
                        description + " cannot be resolved to URL because it does not exist");
            }
            return url;
        }
        try {
            // try URL
            return new URL(resourceLocation);
        } catch (MalformedURLException ex) {
            // no URL -> treat as file path
            try {
                return new File(resourceLocation).toURI().toURL();
            } catch (MalformedURLException ex2) {
                throw new FileNotFoundException("Resource location [" + resourceLocation +
                                                        "] is neither a URL not a well-formed file path");
            }
        }
    }
Resolve the given resource location to a {@code java.net.URL}.
<p>Does not check whether the URL actually exists; simply returns
the URL that the given location would correspond to.

@param resourceLocation the resource location to resolve: either a
                        "classpath:" pseudo URL, a "file:" URL, or a plain file path
@return a corresponding URL object
@throws FileNotFoundException if the resource cannot be resolved to a URL
src/main/java/spark/utils/ResourceUtils.java