나는이 어리석은 알 수없는 동작이 있습니다. 내 응용 프로그램에서는 일부 작업을 실행하기 위해 Java 프로세스를 시작해야합니다. 그래서 아래에 :경로에 공백이있는 이상한 동작
1a) String[] ls = {"cmd",
"/C",
"\"C:\\t e m p\\run time\\jre\\bin\\java.exe\"",
"-jar",
"Canon.jar"};
ProcessBuilder p = new ProcessBuilder(ls);
p.redirectErrorStream();
Process pp = p.start();
위의 작품은 완벽하게 작동합니다. 하지만 Canon.jar
의 전체 경로에 공백이 있으면 작동하지 않습니다. 기본적으로 Canon.jar
경로 주변에 quotes
을 추가해야합니다. 즉
1b) String[] ls = {"cmd","/C",
"\"C:\\Prac\\t e m p\\run time\\jre\\bin\\java.exe\"","-jar",
"\"C:\\Prac\\t e m p\\Canon.jar\""};
위의 내용은 따옴표를 포함 한 후에도 작동하지 않습니다. 그것은 말한다 :
종료 'C : 사용자 \ \ Jatin \ 문서가 Prac \ T는 \'는 내부 또는 외부 명령, 실행할 수있는 프로그램, 또는 배치 파일이 아닙니다.
가장 큰 문제이며, 또한 아래는 작동하지 않습니다
1c) String[] ls = {"cmd","/C",
"\"C:\\Prac\\t e m p\\run time\\jre\\bin\\java.exe\"","-jar",
"\"C:\\Prac\\temp\\Canon.jar\""};//contains no white space.
을 여전히 같은 오류를 말한다. Canon.jar
의 경로에 공백이 포함되어 있지 않으면 어떻게 될까요? 1a
이 작동했을 때 java.exe
경로에서 문제가 발생하는 이유는 무엇입니까?
왜 경로에 공백이 있습니까? 또한 1c에서도 java.exe 경로에 공백이 있습니다. – Ankit
'\\ t '의'\ t'가 탭 문자로 이스케이프되고 있습니까? 그냥 추측 해. –
@Ankit 테스트 용 - 공백입니다. '1c'에서 정확히 요점은, 만약'1a'에서 작동한다면'1c'에서 실패 할 것입니다. – Jatin