Ok, donc pour supprimer une étiquette de perfoce, la commande CommandLine est: p4 label -d mylabel123
. Maintenant, je veux exécuter cette commande en utilisant Java. J'ai essayé Runtime.exec()
et cela fonctionne comme charme. Cependant lorsque je cours la même commande en utilisant ProcessBuilder
cela ne fonctionne pas. Toute aide appréciée.Pourquoi la commande Java Runtime.exec fonctionne-t-elle mais ProcessBuilder ne peut pas exécuter la commande client 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();
}
}
Méthode EXEC1() Sortie: Étiquette mylabel123 supprimé.
Méthode exec2() sortie: Commande inconnue. Essayez 'p4 help' pour plus d'informations.