Skip to content

Commit c1f9c66

Browse files
committed
replace JarURLConnection.getJarFileURL() by .getURL()
For typical plain JAR URLs this doesn't make a real difference, but for special JAR URLs, like Spring Boot uses, it does. The problem showed with nested JAR URLs of Spring Boot. Those have a format like ``` jar:nested:/some/file.jar/!BOOT-INF/lib/nested.jar!/com/example/MyClass.class ``` Here the `connection.getJarFileURL()` is ``` nested:/some/file.jar/!BOOT-INF/lib/nested.jar ``` but the `connection.getURL()` is ``` jar:nested:/some/file.jar/!BOOT-INF/lib/nested.jar!/ ``` Using the latter yields the correct result and allows the custom JAR URL handler to kick in. Using the former will yield an exception that ArchUnit doesn't understand the scheme `nested`. Signed-off-by: Peter Gafert <peter.gafert@archunit.org> (cherry picked from commit 2ac2a4e)
1 parent be8e92c commit c1f9c66

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

archunit/src/main/java/com/tngtech/archunit/core/importer/ClassFileSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ private ClassFileInJar(JarURLConnection connection, JarEntry jarEntry) {
147147
}
148148

149149
private URI makeJarUri(JarEntry input) {
150-
return Location.of(connection.getJarFileURL()).append(input.getName()).asURI();
150+
return Location.of(connection.getURL()).append(input.getName()).asURI();
151151
}
152152

153153
URI getUri() {

0 commit comments

Comments
 (0)