diff --git a/main-command/src/main/java/sbt/internal/BootServerSocket.java b/main-command/src/main/java/sbt/internal/BootServerSocket.java index fab6c90d2..beff97566 100644 --- a/main-command/src/main/java/sbt/internal/BootServerSocket.java +++ b/main-command/src/main/java/sbt/internal/BootServerSocket.java @@ -345,7 +345,7 @@ public class BootServerSocket implements AutoCloseable { : new UnixDomainServerSocket(name, jni); return socket; } catch (final IOException e) { - throw new ServerAlreadyBootingException(); + throw new ServerAlreadyBootingException(e); } } diff --git a/main-command/src/main/java/sbt/internal/ServerAlreadyBootingException.java b/main-command/src/main/java/sbt/internal/ServerAlreadyBootingException.java index 070dc8b92..90a16fdff 100644 --- a/main-command/src/main/java/sbt/internal/ServerAlreadyBootingException.java +++ b/main-command/src/main/java/sbt/internal/ServerAlreadyBootingException.java @@ -7,4 +7,11 @@ package sbt.internal; -public class ServerAlreadyBootingException extends Exception {} +import java.io.IOException; + +public class ServerAlreadyBootingException extends Exception { + + public ServerAlreadyBootingException(IOException e) { + super(e); + } +} diff --git a/main/src/main/scala/sbt/Main.scala b/main/src/main/scala/sbt/Main.scala index af6e97b2c..2064fa514 100644 --- a/main/src/main/scala/sbt/Main.scala +++ b/main/src/main/scala/sbt/Main.scala @@ -118,9 +118,11 @@ private[sbt] object xMain { ): (Option[BootServerSocket], Option[Exit]) = try (Some(new BootServerSocket(configuration)) -> None) catch { - case _: ServerAlreadyBootingException + case e: ServerAlreadyBootingException if System.console != null && !ITerminal.startedByRemoteClient => - println("sbt server is already booting. Create a new server? y/n (default y)") + println( + s"sbt thinks that server is already booting because of this exception:\n${e.getCause}\nCreate a new server? y/n (default y)" + ) val exit = ITerminal.get.withRawInput(System.in.read) match { case 110 => Some(Exit(1)) case _ => None