@Override public Set<String> getResourcePaths(String path) { // Try to get regular resource paths Set<String> paths = super.getResourcePaths(path); // If no paths are returned check for virtual paths /WEB-INF/classes and /WEB-INF/lib if (paths.isEmpty() && path != null) { path = URIUtil.canonicalPath(path); if (path.startsWith(WEB_INF_LIB_PREFIX)) { paths = new TreeSet<String>(); for (String fileName : webInfJarMap.keySet()) { // Return all jar files from class path paths.add(WEB_INF_LIB_PREFIX + "/" + fileName); } } else if (path.startsWith(WEB_INF_CLASSES_PREFIX)) { int i = 0; while (paths.isEmpty() && (i < webInfClasses.size())) { String newPath = path.replace(WEB_INF_CLASSES_PREFIX, webInfClasses.get(i).getPath()); paths = super.getResourcePaths(newPath); i++; } } } return paths; }