2011-12-06 4 views
25

우분투의 홈 디렉토리에서 프로세스를 시작하려고합니다. 경계 밖으로 예외 배열을 가져 오는 중입니다. 여기 코드는 다음과 같습니다ProcessBuilder로 작업 디렉토리를 설정하는 방법

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

는 예외입니다 :

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 

답변

60

당신은/홈을 실행하려고하고 그것을 실행 파일이 아닙니다. 프로세스 빌더의 인수 constructor이 실행할 명령입니다.

작업 디렉토리를 설정하려고합니다. 당신은 directory 방법으로 그것을 할 수 있습니다.

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

좋아, 감사 : 여기

는 완벽한 예입니다. 나는 내가 만든 실수를 깨달았 기 때문에 그 질문을 편집했다. 내 다른 질문에도 대답했을지 모르겠다. – Eric

관련 문제