2016-09-14 2 views
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)를 찾을 수 없다고합니다.

+2

'경로'가 다를 수 있습니다. 또한 직접적으로 프로그램을 호출하는 대신에'-c'를 사용하는 이유는 무엇입니까? – fge

+0

사실, 응용 프로그램 작업을 시작할 때 이미 이와 같았습니다. 내 업데이트 된 질문보기 –

+0

이것은 사용자 환경의 문제입니다. ['System # getEnv'] (http://docs.oracle.com/javase/8/docs/api/java/lang/System.html#getenv--)를 모두 버리고 그 내용과 비교해보십시오. 쉘이 알려줍니다. – fge

답변

1

이것은 결코 수정되지 않는 일식의 이상한 버그입니다. PATH 변수에 추가 한 후 Eclipse를 다시 시작하지 마십시오. 일식을 종료하고 다시 시작하면 효과가 있습니다.

관련 문제