From c23fe8c6d0f2ab411f0d779b348ac79059447ede Mon Sep 17 00:00:00 2001 From: Ed Merks Date: Thu, 25 Jun 2026 09:14:06 +0200 Subject: [PATCH] Use Files.isDirectory/isWritable/isExecutable to determine permissions - Fix NodeJSManager.probeDirectoryForInstallation(File) to use java.nio.Files operations which is more reliable. - File.canWrite is not reliable on Windows with its complex access-list-based permissions. Also File.canExecute is not meaningful for a folder and is intended to indicate if a file (not a directory) is executable. https://github.com/eclipse-wildwebdeveloper/wildwebdeveloper/issues/2106 --- .../wildwebdeveloper/embedder/node/NodeJSManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/org.eclipse.wildwebdeveloper.embedder.node/src/org/eclipse/wildwebdeveloper/embedder/node/NodeJSManager.java b/org.eclipse.wildwebdeveloper.embedder.node/src/org/eclipse/wildwebdeveloper/embedder/node/NodeJSManager.java index 390920894d..47ee27faff 100644 --- a/org.eclipse.wildwebdeveloper.embedder.node/src/org/eclipse/wildwebdeveloper/embedder/node/NodeJSManager.java +++ b/org.eclipse.wildwebdeveloper.embedder.node/src/org/eclipse/wildwebdeveloper/embedder/node/NodeJSManager.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.nio.file.Files; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -245,8 +246,8 @@ private static final boolean probeDirectoryForInstallation(File directory) { if (directory == null) { return false; } - if (directory.exists() && directory.isDirectory() - && directory.canWrite() && directory.canExecute()) { + java.nio.file.Path path = directory.toPath(); + if (Files.isDirectory(path) && Files.isWritable(path) && Files.isExecutable(path)) { return true; } return probeDirectoryForInstallation(directory.getParentFile());