diff --git a/src/inport/ConversionUtils/Solver.java b/src/inport/ConversionUtils/Solver.java index 0ee32a984ecc22ca033a7b3cf2551223920be7e0..3fe8a6589a9d635fac2952650855cccd1dc80035 100644 --- a/src/inport/ConversionUtils/Solver.java +++ b/src/inport/ConversionUtils/Solver.java @@ -133,6 +133,8 @@ public class Solver { ProcessBuilder pb; boolean isResultsInOutput; + Process solverProcess; + switch (solverName) { case Chuffed: { pb = new ProcessBuilder("minizinc", @@ -140,6 +142,7 @@ public class Solver { constraints, minizincData, "-o", solverResults); isResultsInOutput = false; + solverProcess = pb.start(); break; } case OrTools: { @@ -163,6 +166,7 @@ public class Solver { } pb = new ProcessBuilder("external_tools/or-tools_flatzinc_Ubuntu-18.04-64bit_v7.2.6977/bin/fzn-or-tools", flatZincConstraints); + solverProcess = pb.start(); break; } case Undefined: { @@ -185,7 +189,7 @@ public class Solver { return ""; } } - pb = new ProcessBuilder(flatZincSolver, flatZincConstraints); + solverProcess = new ProcessBuilder(flatZincSolver, flatZincConstraints).start(); break; } default: @@ -196,7 +200,8 @@ public class Solver { isDestroyed = false; lock.unlock(); - final Process process = pb.start(); + final Process process = solverProcess; + final BufferedReader br = new BufferedReader(new InputStreamReader(solverProcess.getInputStream())); Thread killer = new Thread(() -> { lock.lock(); @@ -220,11 +225,9 @@ public class Solver { } }); - BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); -// BufferedReader br2 = new BufferedReader(new InputStreamReader(process.getErrorStream())); - killer.start(); - int exitCode = process.waitFor(); + String output = br.lines().collect(Collectors.joining("\n")); + int exitCode = solverProcess.waitFor(); lock.lock(); try { @@ -246,12 +249,10 @@ public class Solver { if (isResultsInOutput) { try (FileWriter res = new FileWriter(solverResults)) { - res.write(br.lines().collect(Collectors.joining("\n"))); + res.write(output); } interpreter.accept(task, solverResults); } else { - - String output = br.lines().collect(Collectors.joining("\n")); // String errors = br.lines().collect(Collectors.joining("\n")); // // System.out.println("output : " + output);