Tolerate absolute URLs in manifest's Class-Path attribute

Closes gh-10268
This commit is contained in:
Andy Wilkinson 2017-09-25 16:46:47 +01:00
parent 0a8b355c60
commit 7eb9193862
2 changed files with 8 additions and 3 deletions

View File

@ -143,7 +143,10 @@ final class ChangeableUrls implements Iterable<URL> {
List<File> nonExistentEntries = new ArrayList<File>();
for (String entry : entries) {
try {
File referenced = new File(parent, entry);
File referenced = new File(entry);
if (!referenced.isAbsolute()) {
referenced = new File(parent, entry);
}
if (referenced.exists()) {
urls.add(referenced.toURI().toURL());
}

View File

@ -75,9 +75,11 @@ public class ChangeableUrlsTests {
@Test
public void urlsFromJarClassPathAreConsidered() throws Exception {
File relative = this.temporaryFolder.newFolder();
File absolute = this.temporaryFolder.newFolder();
File jarWithClassPath = makeJarFileWithUrlsInManifestClassPath(
"project-core/target/classes/", "project-web/target/classes/",
"does-not-exist/target/classes", relative.getName() + "/");
"does-not-exist/target/classes", relative.getName() + "/",
absolute.getAbsolutePath() + "/");
new File(jarWithClassPath.getParentFile(), "project-core/target/classes")
.mkdirs();
new File(jarWithClassPath.getParentFile(), "project-web/target/classes").mkdirs();
@ -87,7 +89,7 @@ public class ChangeableUrlsTests {
assertThat(urls.toList()).containsExactly(
new URL(jarWithClassPath.toURI().toURL(), "project-core/target/classes/"),
new URL(jarWithClassPath.toURI().toURL(), "project-web/target/classes/"),
relative.toURI().toURL());
relative.toURI().toURL(), absolute.toURI().toURL());
}
private URL makeUrl(String name) throws IOException {