2
ProcessBuilder를 통해 Mopidy를 시작하는 Java 응용 프로그램이 있습니다. 이 내 코드입니다 :ProcessBuilder는 터미널에서 찾을 수 있지만 명령을 찾을 수 없습니다.
내가 넷빈즈에서 실행할 때 이상한 것은이if(mopidy==null){
try {
btnStartMopidy.setDisable(true);
btnStopMopidy.setDisable(false);
ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", "mopidy");
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
pb.redirectError(ProcessBuilder.Redirect.INHERIT);
mopidy = pb.start();
} catch (IOException ex) {
ex.printStackTrace();
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}
}
, 출력은 Mopidy 명령을 찾을 수 없습니다라고,하지만 ..
나는 내장 .jar 파일을 실행하면 터미널을 통해 예상되는 Mopidy 출력을 얻습니다. .jar 파일을 두 번 클릭하여 실행하면 명령을 찾을 수 없다는 오류 메시지가 나타납니다.
의견이 있으십니까?
편집 :
내가 프로그램을 호출하는 대신 직접 bash는 -c를 사용하려고이 시간.
ProcessBuilder pb = new ProcessBuilder("/usr/local/bin/mopidy");
이제 Mopidy를 찾을 수 있지만 다른 오류가 발생합니다. 설치된 특정 Python 패키지 (Mopidy에 필요한 GStreamer)를 찾을 수 없다고합니다.
'경로'가 다를 수 있습니다. 또한 직접적으로 프로그램을 호출하는 대신에'-c'를 사용하는 이유는 무엇입니까? – fge
사실, 응용 프로그램 작업을 시작할 때 이미 이와 같았습니다. 내 업데이트 된 질문보기 –
이것은 사용자 환경의 문제입니다. ['System # getEnv'] (http://docs.oracle.com/javase/8/docs/api/java/lang/System.html#getenv--)를 모두 버리고 그 내용과 비교해보십시오. 쉘이 알려줍니다. – fge