Hoe de werkdirectory in te stellen met ProcessBuilder

Ik probeer een proces in mijn thuismap op te starten in ubuntu. Ik krijg een array uit de bounds-uitzondering. Hier is de code:

Process p = null;
ProcessBuilder pb = new ProcessBuilder();
pb.directory(new File("/home"));
p = pb.start();

Hier is de uitzondering:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
    at tester.Main.main(Main.java:31)
Java Result: 1
27

1 antwoord

U probeert uit te voeren/home en het is geen uitvoerbaar bestand. De constructor -argument van de procesbuilder is de uit te voeren opdracht.

U wilt de werkdirectory instellen. U kunt dat doen via de directory -methode.

Hier is een compleet voorbeeld:

Process p = null;
ProcessBuilder pb = new ProcessBuilder("do_foo.sh");
pb.directory(new File("/home"));
p = pb.start();
67
toegevoegd
OK bedankt. Ik heb de vraag zojuist bewerkt, omdat ik me realiseerde dat ik de fout heb gemaakt. Ik denk dat je ook mijn andere vraag hebt beantwoord
toegevoegd de auteur Eric, de bron