티스토리 뷰
Java를 이용해서 프로그램 실행할 때 절대경로를 입력하고 실행하려 했으나
계속해서 수행되지 않길래 문제점을 찾아보니
디렉토리를 변경하는 cd 명령어는 쉘 내장 명령어이기 때문에 별개의 실행파일로 존재하지 않는다고한다.
export 또한 위와 같다.
따라서 ProcessBuilder를 사용한다고 하면 ProcessBuilder.directory()를 사용하여
해당 명령어를 수행할 path를 지정해주면 된다.
public synchronized void callYCSBCmd() throws IOException, InterruptedException {
String path = "/home/sb/YCSB";
List runCmd = new ArrayList();
runCmd.add("./bin/ycsb");
runCmd.add("run");
runCmd.add("basic");
runCmd.add("-P");
runCmd.add("workloads/workloada");
ProcessBuilder runBuilder = null;
Process prun = null;
String str1 = null;
String str2 = null;
try {
runBuilder = new ProcessBuilder(runCmd);
runBuilder.directory(new File(path));
prun = runBuilder.start();
BufferedReader stdOut = new BufferedReader(new InputStreamReader(prun.getInputStream()));
while((str1 = stdOut.readLine()) != null) {
System.out.println(str1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
'JAVA' 카테고리의 다른 글
Java로 외부 프로그램 실행(명령어 두 개 실행) (0) | 2019.04.10 |
---|---|
Java로 외부 프로그램 실행 및 확인하기 (ProcessBuilder) (0) | 2019.04.09 |