diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java index b198490..14bf1e8 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java @@ -84,6 +84,8 @@ public class ResolverUtil { private static final String VFSZIP = "vfszip"; + private static final String VFS = "vfs"; + private static final String BUNDLE_RESOURCE = "bundleresource"; /** The set of matches being accumulated. */ @@ -196,6 +198,10 @@ public class ResolverUtil { } finally { close(stream, newURL); } + } else if (VFS.equals(url.getProtocol())) { + final String path = urlPath.substring(1, urlPath.length() - packageName.length() - 2); + final File file = new File(path); + loadImplementationsInJar(test, packageName, file); } else if (BUNDLE_RESOURCE.equals(url.getProtocol())) { loadImplementationsInBundle(test, packageName); } else { @@ -232,7 +238,7 @@ public class ResolverUtil { // LOG4J2-445 // Finally, decide whether to URL-decode the file name or not... final String protocol = url.getProtocol(); - final List neverDecode = Arrays.asList(VFSZIP, BUNDLE_RESOURCE); + final List neverDecode = Arrays.asList(VFS, VFSZIP, BUNDLE_RESOURCE); if (neverDecode.contains(protocol)) { return urlPath; }