diff --git a/java/src/processing/mode/java/Commander.java b/java/src/processing/mode/java/Commander.java index 4739c251f..1807b26bf 100644 --- a/java/src/processing/mode/java/Commander.java +++ b/java/src/processing/mode/java/Commander.java @@ -275,6 +275,7 @@ public class Commander implements RunnerListener { } else { runner.launch(sketchArgs); } + success = !runner.vmReturnedError(); } } else { success = false; diff --git a/java/src/processing/mode/java/runner/Runner.java b/java/src/processing/mode/java/runner/Runner.java index 2410e9c2c..a29bc6320 100644 --- a/java/src/processing/mode/java/runner/Runner.java +++ b/java/src/processing/mode/java/runner/Runner.java @@ -59,6 +59,7 @@ public class Runner implements MessageConsumer { // Running remote VM protected VirtualMachine vm; + protected boolean vmReturnedError; // Thread transferring remote error stream to our error stream protected Thread errThread = null; @@ -130,6 +131,14 @@ public class Runner implements MessageConsumer { } + /** + * Whether the last invocation of launchJava() was successful or not + */ + public boolean vmReturnedError() { + return vmReturnedError; + } + + /** * Simple non-blocking launch of the virtual machine. VM starts suspended. * @return debuggee VM or null on failure @@ -408,6 +417,7 @@ public class Runner implements MessageConsumer { new Thread(new Runnable() { public void run() { // PApplet.println("java starting"); + vmReturnedError = false; process = PApplet.exec(args); try { // PApplet.println("java waiting"); @@ -445,6 +455,7 @@ public class Runner implements MessageConsumer { // changing this to separate editor and listener [091124] //if (editor != null) { listener.statusError("Could not run the sketch."); + vmReturnedError = true; //} // return null; }