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:
- 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.