TNG / ArchUnit

A Java architecture test library, to specify and assert architecture rules in plain Java
http://archunit.org
Apache License 2.0
3.17k stars 287 forks source link

replace `JarURLConnection.getJarFileURL()` by `.getURL()` #1259

Closed codecholeric closed 5 months ago

codecholeric commented 5 months ago

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!/

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.

Resolves: #1224