edu.rice.cs.cunit.util
Class ExecJVM

java.lang.Object
  extended by edu.rice.cs.cunit.util.ExecJVM

public final class ExecJVM
extends java.lang.Object

A utility class to allow executing another JVM.

Version:
$Id: ExecJVM.java 3928 2006-08-01 19:18:36Z rcartwright $

Field Summary
private static java.lang.String OS_NAME
           
private static java.lang.String PATH_SEPARATOR
           
 
Constructor Summary
private ExecJVM()
           
 
Method Summary
private static void _addArray(java.util.LinkedList<java.lang.String> list, java.lang.String[] array)
           
private static java.lang.String _getExecutable()
          Find the java executable.
private static boolean _isDOS()
          DOS/Windows family OS's use ; to separate paths.
private static boolean _isNetware()
           
private static java.lang.Process _runJVM(java.lang.String mainClass, java.lang.String[] classParams, java.lang.String[] jvmParams, java.io.File workDir)
          Creates and runs a new JVM.
static java.lang.Process runJVM(java.lang.String mainClass, java.lang.String[] classParams, java.lang.String[] classPath, java.lang.String[] jvmParams, java.io.File workDir)
          Runs a new JVM.
static java.lang.Process runJVM(java.lang.String mainClass, java.lang.String[] classParams, java.lang.String classPath, java.lang.String[] jvmParams, java.io.File workDir)
          Runs a new JVM.
static java.lang.Process runJVMPropagateClassPath(java.lang.String mainClass, java.lang.String[] classParams, java.io.File workDir)
          Runs a new JVM, propagating the present classpath.
static java.lang.Process runJVMPropagateClassPath(java.lang.String mainClass, java.lang.String[] classParams, java.lang.String[] jvmParams, java.io.File workDir)
          Runs a new JVM, propagating the present classpath.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PATH_SEPARATOR

private static final java.lang.String PATH_SEPARATOR

OS_NAME

private static final java.lang.String OS_NAME
Constructor Detail

ExecJVM

private ExecJVM()
Method Detail

runJVM

public static java.lang.Process runJVM(java.lang.String mainClass,
                                       java.lang.String[] classParams,
                                       java.lang.String[] classPath,
                                       java.lang.String[] jvmParams,
                                       java.io.File workDir)
                                throws java.io.IOException
Runs a new JVM.

Parameters:
mainClass - Class to run
classParams - Parameters to pass to the main class
classPath - Array of items to put in classpath of new JVM
jvmParams - Array of additional command-line parameters to pass to JVM
workDir - working directory
Returns:
Process object corresponding to the executed JVM
Throws:
java.io.IOException

runJVM

public static java.lang.Process runJVM(java.lang.String mainClass,
                                       java.lang.String[] classParams,
                                       java.lang.String classPath,
                                       java.lang.String[] jvmParams,
                                       java.io.File workDir)
                                throws java.io.IOException
Runs a new JVM.

Parameters:
mainClass - Class to run
classParams - Parameters to pass to the main class
classPath - Pre-formatted classpath parameter
jvmParams - Array of additional command-line parameters to pass to JVM
workDir - working directory
Returns:
Process object corresponding to the executed JVM
Throws:
java.io.IOException

runJVMPropagateClassPath

public static java.lang.Process runJVMPropagateClassPath(java.lang.String mainClass,
                                                         java.lang.String[] classParams,
                                                         java.lang.String[] jvmParams,
                                                         java.io.File workDir)
                                                  throws java.io.IOException
Runs a new JVM, propagating the present classpath. It changes the entries in the class path to absolute form.

Parameters:
mainClass - Class to run
classParams - Parameters to pass to the main class
jvmParams - Array of additional command-line parameters to pass to JVM
workDir - working directory
Returns:
Process object corresponding to the executed JVM
Throws:
java.io.IOException

runJVMPropagateClassPath

public static java.lang.Process runJVMPropagateClassPath(java.lang.String mainClass,
                                                         java.lang.String[] classParams,
                                                         java.io.File workDir)
                                                  throws java.io.IOException
Runs a new JVM, propagating the present classpath.

Parameters:
mainClass - Class to run
classParams - Parameters to pass to the main class
workDir - working directory
Returns:
Process object corresponding to the new JVM process
Throws:
java.io.IOException

_runJVM

private static java.lang.Process _runJVM(java.lang.String mainClass,
                                         java.lang.String[] classParams,
                                         java.lang.String[] jvmParams,
                                         java.io.File workDir)
                                  throws java.io.IOException
Creates and runs a new JVM. This method is private now because it cannot change the classpath entries to absolute paths, so it should not be used.

Parameters:
mainClass - Class to run
classParams - Parameters to pass to the main class
jvmParams - Array of additional command-line parameters to pass to JVM
workDir - working directory
Returns:
Process object corresponding to the executed JVM
Throws:
java.io.IOException

_addArray

private static void _addArray(java.util.LinkedList<java.lang.String> list,
                              java.lang.String[] array)

_isDOS

private static boolean _isDOS()
DOS/Windows family OS's use ; to separate paths.

Returns:
true if DOS/Windows

_isNetware

private static boolean _isNetware()
Returns:
true if Netware

_getExecutable

private static java.lang.String _getExecutable()
Find the java executable. This logic comes from Ant.

Returns:
java executable string