Background
In this post we will see how we can run any process from java programmatically. In specific I will show how can we compile a java file from a Java process. We can very well use Runtime.getRuntime().exec() method to start the process but in this post I am going to demonstrate using ProcessBuilder class.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static void executeJavacCommand() throws IOException { List<String> paramsExecute = new ArrayList<String>(); paramsExecute.add( "C:\\Program Files\\Java\\jdk1.6.0_31\\bin\\javac.exe" ); paramsExecute.add( "-cp" ); paramsExecute.add( "." ); paramsExecute.add( "HelloWorld.java" ); ProcessBuilder pBuilder = new ProcessBuilder(paramsExecute); Process process = pBuilder.start(); Reader reader = new InputStreamReader(process.getErrorStream()); int ch; while ((ch = reader.read())!= - 1 ) System.out.print(( char )ch); reader.close(); } |
Note1 : In above code I am only printing the error stream of the process but you can manipulate the output stream as well as provide input stream to the process.
Note 2: You can also see my previous post on how to get the java executable paths. You can programmatically derive those and use it in above code.
Note 2: You can also see my previous post on how to get the java executable paths. You can programmatically derive those and use it in above code.