Perfoce 레이블을 삭제하려면 CommandLine 명령은 p4 label -d mylabel123
입니다. 이제 Java를 사용하여이 명령을 실행하려고합니다. 나는 Runtime.exec()
을 시도하고 그것은 매력처럼 작동합니다. 그러나 ProcessBuilder
을 사용하여 동일한 명령을 실행해도 작동하지 않습니다. 어떤 도움을 주셔서 감사합니다.Java Runtime.exec 명령이 작동하지만 ProcessBuilder가 PERFORCE 클라이언트 명령을 실행할 수없는 이유는 무엇입니까?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
exec1("p4 label -d mylabel123");
exec2("p4","label -d mylabel123");
}
public static void exec1(String cmd)
throws java.io.IOException, InterruptedException {
System.out.println("Executing Runtime.exec()");
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(
proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(
proc.getErrorStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
proc.waitFor();
}
public static void exec2(String... cmd) throws IOException, InterruptedException{
System.out.println("\n\nExecuting ProcessBuilder.start()");
ProcessBuilder pb = new ProcessBuilder();
pb.inheritIO();
pb.command(cmd);
Process process = pb.start();
process.waitFor();
}
}
방법 exec1() 출력 : 라벨 mylabel123 삭제.
메서드 exec2() 출력 : 알 수없는 명령입니다. 정보를 보려면 'p4 help'를 시도하십시오.