From efec7bce31714ca048b7d4c3198ce63ff914f41b Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Tue, 13 Oct 2020 08:17:21 -0700 Subject: [PATCH] Check if target is directory before creating When project/target is a symbolic link, sbt 1.4.0 crashes on startup because Files.createDirectories will throw a FileAlreadyExistsException. The fix is to first check if the target directory exists before trying to create it. --- main-command/src/main/java/sbt/internal/BootServerSocket.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main-command/src/main/java/sbt/internal/BootServerSocket.java b/main-command/src/main/java/sbt/internal/BootServerSocket.java index 3cda9e830..afae5c6f6 100644 --- a/main-command/src/main/java/sbt/internal/BootServerSocket.java +++ b/main-command/src/main/java/sbt/internal/BootServerSocket.java @@ -287,8 +287,8 @@ public class BootServerSocket implements AutoCloseable { final Path base = configuration.baseDirectory().toPath().toRealPath(); final Path target = base.resolve("project").resolve("target"); if (!isWindows) { + if (!Files.isDirectory(target)) Files.createDirectories(target); socketFile = Paths.get(socketLocation(base)); - Files.createDirectories(target); } else { socketFile = null; }