Index: log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java (date 1523489834000) +++ log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java (date 1523631328000) @@ -19,6 +19,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; @@ -198,13 +199,29 @@ close(stream, newURL); } } else if (VFS.equals(url.getProtocol())) { - final String containerPath = urlPath.substring(1, - urlPath.length() - packageName.length() - 2); + final String containerPath = urlPath.substring(1, urlPath.length() - packageName.length() - 2); final File containerFile = new File(containerPath); - if (containerFile.isDirectory()) { - loadImplementationsInDirectory(test, packageName, new File(containerFile, packageName)); - } else { - loadImplementationsInJar(test, packageName, containerFile); + if (containerFile.exists()) { + if (containerFile.isDirectory()) { + loadImplementationsInDirectory(test, packageName, new File(containerFile, packageName)); + } else { + loadImplementationsInJar(test, packageName, containerFile); + } + } else { + // fallback code for Jboss/Wildfly, if the file couldn't be found + // by loading the path as a file, try to read the jar as a stream + final String path = urlPath.substring(0, urlPath.length() - packageName.length() - 2); + final URL newURL = new URL(url.getProtocol(), url.getHost(), path); + + try (final InputStream is = newURL.openStream()) { + final JarInputStream jarStream; + if (is instanceof JarInputStream) { + jarStream = (JarInputStream) is; + } else { + jarStream = new JarInputStream(is); + } + loadImplementationsInJar(test, packageName, path, jarStream); + } } } else if (BUNDLE_RESOURCE.equals(url.getProtocol())) { loadImplementationsInBundle(test, packageName);