Implementation of review comments for classpath and jar

resourceFactories
You'll need some way to separate the jar file part of the URI from the path part.  It sounds like java.net.URI can't handle this for you so you'll need to do it yourself.  Basically, the steps would be as follows:
* Extract path portion of the URI (everything after the !/, preceded with a /).  This is what ClasspathResource.getPath() should be returning, so you could just call this.getPath() when that's fixed.  You may be able to use classpathUrl.getPath() if it works,  Maybe java.net.URL has better support for the jar protocol than java.net.URI.
* Use a path only URI constructed from the path obtained above to resolve relative against.
* Return a new URI constructed from the original URI and the new path.
Something like the following might work.
```
if ("jar".equals(getScheme()) {
    URI pathOnlyUri = new URI(getPath() // should start with '/');
    URI resolved = pathOnlyUri.resolve(relative);
    int idx = getUri().toString().indexOf("!/");
    return new URI(getUri().toString().substring(0, idx+1) + resolved.getPath();
} else {
    return classpathUri.resolve(relative);
} 
```
I didn't try this code, so it might need some tweaking, but you get the idea...