javaからjavacコマンドのような外部コマンドを実行するには、ProcessBuilderクラスを使用します。
今回linux環境で自分のホームフォルダ直下にHello.javaファイルが格納されており、
それをjavaからコンパイル・実行し、結果を出力してみます。
※Hello.javaは"hello"を出力する単純なソースです。
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class CommandExec {
public static void main(String[] args) {
ProcessBuilder pb1 = new ProcessBuilder("javac", "Hello.java");
pb1.directory(new File(System.getProperty("user.home")));
try {
Process process = pb1.start();
int exit = process.waitFor();
if (exit != 0) {
System.out.println("javacコマンド失敗");
return;
}
pb1.command("java", "Hello");
process = pb1.start();
exit = process.waitFor();
if (exit != 0) {
System.out.println("javaコマンド失敗");
return;
}
InputStream inputStream = process.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream);
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String line = bufferedReader.readLine();
while (line != null) {
System.out.println(line);
line = bufferedReader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
0 件のコメント:
コメントを投稿