fix: использовать java.exe вместо javaw.exe для отладки, inheritIO вместо ручного чтения
This commit is contained in:
@@ -105,7 +105,7 @@ public class Bootstrap {
|
|||||||
|
|
||||||
private static void launchInNewProcess(String[] args) throws Exception {
|
private static void launchInNewProcess(String[] args) throws Exception {
|
||||||
String os = System.getProperty("os.name").toLowerCase();
|
String os = System.getProperty("os.name").toLowerCase();
|
||||||
String javaExe = os.contains("windows") ? "javaw.exe" : "java";
|
String javaExe = os.contains("windows") ? "java.exe" : "java";
|
||||||
|
|
||||||
Path javaBin = findJava(false);
|
Path javaBin = findJava(false);
|
||||||
Path javafxPath = baseDir.resolve("lib").resolve("javafx");
|
Path javafxPath = baseDir.resolve("lib").resolve("javafx");
|
||||||
@@ -130,23 +130,12 @@ public class Bootstrap {
|
|||||||
|
|
||||||
ProcessBuilder pb = new ProcessBuilder(cmd);
|
ProcessBuilder pb = new ProcessBuilder(cmd);
|
||||||
pb.directory(baseDir.toFile());
|
pb.directory(baseDir.toFile());
|
||||||
pb.redirectErrorStream(true);
|
pb.inheritIO();
|
||||||
|
|
||||||
|
log("Запуск процесса: " + String.join(" ", cmd));
|
||||||
|
|
||||||
Process p = pb.start();
|
Process p = pb.start();
|
||||||
|
|
||||||
Thread outputThread = new Thread(() -> {
|
|
||||||
try (BufferedReader reader = new BufferedReader(
|
|
||||||
new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8))) {
|
|
||||||
String line;
|
|
||||||
while ((line = reader.readLine()) != null) {
|
|
||||||
System.out.println(line);
|
|
||||||
}
|
|
||||||
} catch (Exception ignored) {}
|
|
||||||
});
|
|
||||||
outputThread.start();
|
|
||||||
|
|
||||||
int code = p.waitFor();
|
int code = p.waitFor();
|
||||||
outputThread.interrupt();
|
|
||||||
|
|
||||||
log("JFX процесс завершился с кодом: " + code);
|
log("JFX процесс завершился с кодом: " + code);
|
||||||
System.exit(code);
|
System.exit(code);
|
||||||
@@ -154,13 +143,7 @@ public class Bootstrap {
|
|||||||
|
|
||||||
private static Path findJava(boolean preferConsole) {
|
private static Path findJava(boolean preferConsole) {
|
||||||
String os = System.getProperty("os.name").toLowerCase();
|
String os = System.getProperty("os.name").toLowerCase();
|
||||||
String javaExe;
|
String javaExe = "java.exe";
|
||||||
|
|
||||||
if (preferConsole || !os.contains("windows")) {
|
|
||||||
javaExe = "java";
|
|
||||||
} else {
|
|
||||||
javaExe = "javaw.exe";
|
|
||||||
}
|
|
||||||
|
|
||||||
Path javaBin = baseDir.resolve("jre21").resolve("bin").resolve(javaExe);
|
Path javaBin = baseDir.resolve("jre21").resolve("bin").resolve(javaExe);
|
||||||
if (!Files.exists(javaBin)) {
|
if (!Files.exists(javaBin)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user