프로세스 'exec 함수를 사용하여 로컬에서 bash 명령을 실행하는 Java 프로그램 인 MyAwesomeProgram을 작성 중입니다. 내 코드는/home/a/b/c에 있으며 실행해야하는/home/a/b/d에있는 .sh 파일이 있습니다. 내 코드를 실행할 때, :다른 디렉토리에서 Java의 exec를 사용하여 .sh 파일을 실행 하시겠습니까?
Process p;
Runtime rt = new Runtime.getRuntime();
p = rt.exec("./home/a/b/d/shell.sh");
p.waitFor();
나는 오류가 나타납니다
Exception in thread "main" java.io.IOException: Cannot run program "./home/a/b/d/shell.sh": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at MyAwesomeProgram.main(MyAwesomeProgram.java:186)
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
을 나는 그러나 내가 찾을 수 없어,이 그냥 exec 명령 문자열을 포맷의 실수라고 생각 지금까지의 해결책. 어디서 엉망진창있어? exec를 효과적으로 사용하기위한 다른 팁이나 트릭은 높이 평가 될 수 있지만 완전히 선택 사항입니다. 감사!
편집 : 코드가 작동하고있어, Woot4Moo가 말한 것뿐만 아니라 거꾸로 얻은 몇 가지 디렉토리 참조와 관련된 문제였습니다.
:
당신이 다음에 도착하려는 : 당신이에있는 경우
..
을 당신이 갈 수 있습니다 하나의 디렉토리 : 그래서 본질적으로 귀하의 의견은 다음과 같은 것이있다 너없이 그걸 시도 했니?. 코드가/home/a/b/c에서 실행 중이면 /home/a/b/c/home/a/b/d/shell.sh – Dan명령 줄에서 실행하는 방법을 게시하십시오. 현재 디렉토리 (예 :/home/chris) 포함 – Woot4Moo
javac MyAwesomeProgram.java, java MyAwesomeProgram. main 메소드는 코드를 포함하고 있습니다 (이것은 이미 테스트를 거친 더 큰 그룹의 프로그램에 통합하기 전에 exec 기능을 테스트하는 더미 프로그램입니다). 필요한 모든 것이 이미 수입되어 예상대로 작동하도록 테스트되었습니다. – Chris