I'm building an AIR app and am using Java to offload some heavy duty work to keep Flash responsive. I want to make sure the end user has a version of Java installed the is compatible with the Jar I ship with my AIR app. To do so I use the following (pseudo) code below:
CODE:
-
var args:Vector.<String> = new Vector.<String>();
-
args.push("-fullversion");
-
-
var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
-
info.executable = javaLocation;
-
info.arguments = args;
-
-
javaProcess = new NativeProcess();
-
javaProcess.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, versionOutputHandler);
-
// Fun fact: -fullversion output is considered error data! :s
-
javaProcess.addEventListener(ProgressEvent.STANDARD_ERROR_DATA, versionOutputHandler);
-
javaProcess.addEventListener(NativeProcessExitEvent.EXIT, versionExitHandler);
-
javaProcess.addEventListener(IOErrorEvent.STANDARD_OUTPUT_IO_ERROR, versionErrorHandler);
-
javaProcess.addEventListener(IOErrorEvent.STANDARD_ERROR_IO_ERROR, versionErrorHandler);
-
javaProcess.start(info);
To my surprise the result of the call to "java -fullversion" is send to the standard error stream and thus triggering the ProgressEvent.STANDARD_ERROR_DATA to be fired.