2016-09-14 6 views
2

ProcessBuilder経由でMopidyを起動するJavaアプリケーションがあります。 これは私のコードです:私は、構築された.jarファイルを実行すると、私は、NetBeansからそれを実行したときに奇妙なことがあり、出力はMopidyコマンドが見つからないと言う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ファイルをダブルクリックして実行すると、コマンドが見つからないという同じエラーが表示されます。

どのような考えですか?

EDIT:

私はプログラムを呼び出す代わりに、直接のはbash -cを使用してみました。

ProcessBuilder pb = new ProcessBuilder("/usr/local/bin/mopidy"); 

これでMopidyが見つかるようですが、別のエラーが発生しています。あるPythonパッケージ(Mopidyに必要なGStreamer)は、インストールされていても見つかりません。

+2

あなたの 'PATH'はおそらく異なります。また、プログラムを直接呼び出すのではなく、 '-c'を実行する理由は何ですか? – fge

+0

実際には、私がアプリケーションの作業を開始したとき、これはすでにこのようでした。更新された質問を参照してください。 –

+0

これは間違いなくあなたの環境の問題です。 ['System#getEnv'](http://docs.oracle.com/javase/8/docs/api/java/lang/System.html#getenv--)のすべてをダンプして、それをあなたのシェルはあなたに伝えます。 – fge

答えて

1

これは決して固定されない日食の奇妙なバグです。 PATH変数に追加した後にEclipseを再起動しないでください。 eclipseを終了してもう一度やり直すとうまくいくはずです。

関連する問題