jlibs.core.lang
Class JavaProcessBuilder

java.lang.Object
  extended by jlibs.core.lang.JavaProcessBuilder

public class JavaProcessBuilder
extends Object

Similar to ProcessBuilder, this class makes the java process creation easier.

This class simply manages collection of java process attributes and help your to create command out of it.

 JavaProcessBuilder jvm = new JavaProcessBuilder();
 
JavaProcessBuilder is pre-configured with current java home and current working directory initially.
you can change them as below:
 jvm.javaHome(new File("c:/jdk5")); // to configure java home
 jvm.workingDir(new File("c:/myProject")); // to configure working directory
 
To configure various attributes:
 // to configure classpath
 jvm.classpath("lib/jlibs-core.jar") // relative path from configured working dir
    .classpath(new File("c:/myproject/lib/jlibs-xml.jar");

 // to get configured classpath
 List classpath = jvm.classpath();

 // to configure additional classpath
 jvm.endorsedDir("lib/endorsed")
    .extDir("lib/ext")
    .libraryPath("lib/native")
    .bootClasspath("lib/boot/xerces.jar")
    .appendBootClasspath("lib/boot/xalan.jar")
    .prependBootClasspath("lib/boot/dom.jar");

 // to configure System Properties
 jvm.systemProperty("myprop", "myvalue")
    .systemProperty("myflag");

 // to configure heap and vmtype
 jvm.initialHeap(512); // or jvm.initialHeap("512m");
 jvm.maxHeap(1024); // or jvm.maxHeap("1024m");
 jvm.client(); // to use -client
 jvm.server(); // to use -server

 // to configure remote debugging
 jvm.debugPort(7000)
    .debugSuspend(true);

 // to configure any additional jvm args
 jvm.jvmArg("-Xgc:somealgo");

 // to configure mainclass and its arguments
 jvm.mainClass("example.MyTest")
    .arg("-xvf")
    .arg("testDir");
 
To get the created command:
 String command[] = jvm.command();
 
Any relative paths specified, will get resolved relative to working directory during command creation.

To launch it:

 Process p = jvm.launch(System.out, System.err);
 
the two arguments to launch(...) specify to which process output and error streams to be redirected. These arguments can be null, if you don't want them to be redirected.

Author:
Santhosh Kumar T

Constructor Summary
JavaProcessBuilder()
           
 
Method Summary
 List<File> appendBootClasspath()
           
 JavaProcessBuilder appendBootClasspath(File resource)
           
 JavaProcessBuilder appendBootClasspath(String resource)
           
 JavaProcessBuilder arg(String arg)
           
 List<String> args()
           
 List<File> bootClasspath()
           
 JavaProcessBuilder bootClasspath(File resource)
           
 JavaProcessBuilder bootClasspath(String resource)
           
 List<File> classpath()
           
 JavaProcessBuilder classpath(File resource)
           
 JavaProcessBuilder classpath(String resource)
           
 JavaProcessBuilder client()
           
 String[] command()
          Returns command with all its arguments
 int debugPort()
           
 JavaProcessBuilder debugPort(int port)
           
 boolean debugSuspend()
           
 JavaProcessBuilder debugSuspend(boolean suspend)
           
 JavaProcessBuilder endorsedDir(File dir)
           
 JavaProcessBuilder endorsedDir(String dir)
           
 List<File> endorsedDirs()
           
 JavaProcessBuilder extDir(File dir)
           
 JavaProcessBuilder extDir(String dir)
           
 List<File> extDirs()
           
 String initialHeap()
           
 JavaProcessBuilder initialHeap(int mb)
           
 JavaProcessBuilder initialHeap(String size)
           
 File javaHome()
           
 JavaProcessBuilder javaHome(File javaHome)
           
 JavaProcessBuilder jvmArg(String arg)
           
 List<String> jvmArgs()
           
 Process launch(OutputStream output, OutputStream error)
          launches jvm with current configuration.
 List<File> libraryPath()
           
 JavaProcessBuilder libraryPath(File dir)
           
 JavaProcessBuilder libraryPath(String dir)
           
 String mainClass()
           
 JavaProcessBuilder mainClass(String mainClass)
           
 String maxHeap()
           
 JavaProcessBuilder maxHeap(int mb)
           
 JavaProcessBuilder maxHeap(String size)
           
 List<File> prependBootClasspath()
           
 JavaProcessBuilder prependBootClasspath(File resource)
           
 JavaProcessBuilder prependBootClasspath(String resource)
           
 JavaProcessBuilder server()
           
 Map<String,String> systemProperties()
           
 JavaProcessBuilder systemProperty(String name)
           
 JavaProcessBuilder systemProperty(String name, String value)
           
 String vmType()
           
 File workingDir()
           
 JavaProcessBuilder workingDir(File dir)
           
 JavaProcessBuilder workingDir(String dir)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JavaProcessBuilder

public JavaProcessBuilder()
Method Detail

javaHome

public JavaProcessBuilder javaHome(File javaHome)

javaHome

public File javaHome()

workingDir

public JavaProcessBuilder workingDir(String dir)

workingDir

public JavaProcessBuilder workingDir(File dir)

workingDir

public File workingDir()

classpath

public JavaProcessBuilder classpath(String resource)

classpath

public JavaProcessBuilder classpath(File resource)

classpath

public List<File> classpath()

endorsedDir

public JavaProcessBuilder endorsedDir(String dir)

endorsedDir

public JavaProcessBuilder endorsedDir(File dir)

endorsedDirs

public List<File> endorsedDirs()

extDir

public JavaProcessBuilder extDir(String dir)

extDir

public JavaProcessBuilder extDir(File dir)

extDirs

public List<File> extDirs()

libraryPath

public JavaProcessBuilder libraryPath(String dir)

libraryPath

public JavaProcessBuilder libraryPath(File dir)

libraryPath

public List<File> libraryPath()

bootClasspath

public JavaProcessBuilder bootClasspath(String resource)

bootClasspath

public JavaProcessBuilder bootClasspath(File resource)

bootClasspath

public List<File> bootClasspath()

appendBootClasspath

public JavaProcessBuilder appendBootClasspath(String resource)

appendBootClasspath

public JavaProcessBuilder appendBootClasspath(File resource)

appendBootClasspath

public List<File> appendBootClasspath()

prependBootClasspath

public JavaProcessBuilder prependBootClasspath(String resource)

prependBootClasspath

public JavaProcessBuilder prependBootClasspath(File resource)

prependBootClasspath

public List<File> prependBootClasspath()

systemProperty

public JavaProcessBuilder systemProperty(String name,
                                         String value)

systemProperty

public JavaProcessBuilder systemProperty(String name)

systemProperties

public Map<String,String> systemProperties()

initialHeap

public JavaProcessBuilder initialHeap(int mb)

initialHeap

public JavaProcessBuilder initialHeap(String size)

initialHeap

public String initialHeap()

maxHeap

public JavaProcessBuilder maxHeap(int mb)

maxHeap

public JavaProcessBuilder maxHeap(String size)

maxHeap

public String maxHeap()

client

public JavaProcessBuilder client()

server

public JavaProcessBuilder server()

vmType

public String vmType()

jvmArg

public JavaProcessBuilder jvmArg(String arg)

jvmArgs

public List<String> jvmArgs()

mainClass

public JavaProcessBuilder mainClass(String mainClass)

mainClass

public String mainClass()

debugSuspend

public JavaProcessBuilder debugSuspend(boolean suspend)

debugSuspend

public boolean debugSuspend()

debugPort

public JavaProcessBuilder debugPort(int port)

debugPort

public int debugPort()

arg

public JavaProcessBuilder arg(String arg)

args

public List<String> args()

command

public String[] command()
                 throws IOException
Returns command with all its arguments

Throws:
IOException

launch

public Process launch(OutputStream output,
                      OutputStream error)
               throws IOException
launches jvm with current configuration. note that, the streams passed are not closed automatically.

Parameters:
output - outputstream to which process's input stream to be redirected. if null, it is not redirected
error - outputstream to which process's error stream to be redirected. if null, it is not redirected
Returns:
the process created
Throws:
IOException - if an I/O error occurs.
See Also:
RuntimeUtil.redirectStreams(Process, java.io.OutputStream, java.io.OutputStream)


Copyright © 2018. All rights reserved.