OS X 10.8의 Java 응용 프로그램에서 실행하는 외부 스크립트를 가져 오는 데 문제가 있습니다. 그것은 윈도우에서 작동하므로하지 내가 OS X 용 잘못하고 있어요 무엇인지 잘 작동 무엇OS X의 Java 응용 프로그램에서 외부 스크립트 실행
(윈도우) :
String[] commands = {
"\"" + _appDataDir + "\\Temp\\Workers\\" + _batchName + "\"",
"\"" + _appDataDir + "\\Temp\\frame%d.jpg\"",
"\"" + _fileName + "\""};
proc = rt.exec(commands);
그래서 OS X에 대해 다음 한 :
String[] commands = {
_appDataDir + "/Temp/Workers/" + _batchName,
_appDataDir + "/Temp/Workers/mac-ffmpeg",
_appDataDir + "/Temp/frame%d.jpg",
"\"" + _fileName + "\""};
proc = rt.exec(commands);
이것은 파일 이름에 공백이 없지만 "java.io.IOException : Bad file descriptor"오류가있는 공백이있을 때 실패합니다.
현재 모든 경로를 쉽게 고칠 수있는 공백이 없어졌지만 저장 대화 상자에서 사용자가 선택 했으므로 fileName 문자열을 제어 할 수 없습니다. 나는 fileName 주위에 큰 따옴표를 넣지 않고 시도했지만 아무런 차이가 없다.
ProcessBuilder proc2 = new ProcessBuilder(
"/bin/bash",
"-c",
_appDataDir + "/Temp/Workers/" + _batchName,
_appDataDir + "/Temp/Workers/mac-ffmpeg",
_appDataDir + "/Temp/frame%d.jpg",
"\"" + _fileName + "\""
);
proc = proc2.start();
을하지만 동일한 오류 준다 :
는 또한 아래와 같이 (상기와 "/ 빈/떠들썩한 파티/-c"비트없이 모두) ProcessBuilder를 시도했다. 내가 할 수있는 한 다른 비슷한 질문에서 제안되는 모든 것을하고 있지만 아무것도 작동하지 않는다는 것을 알 수 있습니다. 어떤 아이디어라도 감사 할 것입니다!
, 덕분에 그를 교체해야! 스크립트 자체에서 따옴표를 사용하는 것이 트릭을 완료했습니다. 여기서 나를 던진 것은 스크립트를 실행하고 터미널에서 인수 (큰 따옴표로 묶음)를 전달할 때 문제가 없었기 때문에 스크립트보다는 Java 코드로 문제가 있다고 가정했기 때문입니다. – aritchie