diff --git a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ResourcesFeature.java b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ResourcesFeature.java index 3bf61d21f7b9..64a569858fb4 100644 --- a/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ResourcesFeature.java +++ b/substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ResourcesFeature.java @@ -33,6 +33,7 @@ import java.net.URL; import java.net.URLClassLoader; import java.nio.file.FileSystem; +import java.nio.file.FileSystems; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -252,6 +253,7 @@ private static void scanDirectory(DebugContext debugContext, File root, Pattern[ Map> matchedDirectoryResources = new HashMap<>(); Set allEntries = new HashSet<>(); ArrayList queue = new ArrayList<>(); + String separator = FileSystems.getDefault().getSeparator(); queue.add(root); while (!queue.isEmpty()) { @@ -259,6 +261,8 @@ private static void scanDirectory(DebugContext debugContext, File root, Pattern[ String relativeFilePath = ""; if (file != root) { relativeFilePath = file.getAbsolutePath().substring(root.getAbsolutePath().length() + 1); + /* Java resources always use / as the path separator, as do our resource inclusion patterns. */ + relativeFilePath = relativeFilePath.replace(separator, "/"); } if (file.isDirectory()) { if (!relativeFilePath.isEmpty()) {